PREP

  1. https://github.com/dlab-geo/r-geospatial-workshop
  1. Open RStudio and start a new script

  2. Follow along by opening r-geospatial-workshop-pt1-sp2018.html

  3. Install required libraries

install.packages(
  c("sp","rgdal","tmap","classInt","RColorBrewer",
    "ggplot2","leaflet", "ggmap"), dependencies=TRUE
)

Geospatial Data in R

Workshop Goals

  • Intro to geospatial data

  • Intro to coordinate reference systems (CRS)

  • Classes & methods for working with spatial data in R

  • Mapping geospatial data

  • Practice

About Me

Patty Frontiera

dlab.berkeley.edu

About you

Who are you?

Why are you here?

Getting Started

  1. Get the workshop files

https://github.com/dlab-geo/r-geospatial-workshop

  • Click Clone or Download and download the zip file

  • Upzip the zip file and make a note of the folder in which it is located

Getting Started

  1. Open RStudio and start a new script

  2. Follow along by opening r-geospatial-workshop-pt1-sp2018.html

Getting Started

  1. In RStudio, install required libraries
install.packages(
  c("sp","rgdal","tmap","classInt","RColorBrewer",
    "ggplot2","leaflet", "ggmap"), dependencies=TRUE
)

Geographic Data

Geographic Data

are data about locations on or near the surface of the Earth.

Place names

convey geographic information but don’t unambigously specify location

Geospatial data

represent location geometrically with coordinates

46.130479, -117.134167

Coordinate Reference System

Coordinates indicate specific locations on the Earth when associated with a geographic coordinate reference system or CRS.

Geographic Coordinate Reference Systems

specify

  1. the shape of the Earth as the major & minor axes of an ellipsoid
  2. the origin (0,0) - equator (~X), prime meridian (~Y)
  3. fit of the CRS to the Earth (center of the earth), aka Datum
  4. units, eg lat/lon expressed as decimal degrees or DMS

Because of variations in 1-3, there are many geographic CRSs!

WGS84

The World Geodetic System of 1984 is the default geographic CRS used today.

WGS84 is the default CRS for most GIS software

Almost all data with lon/lat coordinates are assumed to be WGS84 unless otherwise specified

[NAD83] is another common geographic CRS used by US agencies like the Census.

WGS84 and NAD83 are so similar that differences are often ignored except for applications requiring high locational accuracy.

Map Projections

A Projected CRS applies a map projection to a Geographic CRS

Map Projection: mathematial transformation from curved to flat surface

Projected CRSs

There are many, many, many projected CRSs

All introduce distortion, eg in shape, area, distance, direction

No best one for all purposes

Selection depends on location, extent and purpose

Different Projected CRSs

Spatial Data

Spatial data is a more generic term that is not just for geographic data.

Spatial data are powerful because

  • dynamically determine spatial metrics like area and length,
  • characteristics like distance and direction, and
  • relationships like inside and intersects from these data.

Types of Spatial Data

Vector Data

Points, lines and Polygons

Raster Data

Regular grid of cells (or pixels)

  • We won’t be covering Raster data in this workshop*

Softare for working with Geospatial Data

  • Why special software?

Software for working with Geospatial Data

Most software can only query and analyze numbers and text

  • Databases, spreadsheets, statistical software packages

GIS - Geographic Information Systems

Software that can import, create, store, edit, visualize and analyze geospatial data

  • data types/objects to represent geospatial data
    • locations represented with coordinates
    • and referenced to the surface of the earth via CRSs
  • methods to operate on those representations

Types of GIS

Desktop GIS - ArcGIS, QGIS

Software extended to support geospatial data - Tableau, R

Spatial Databases - Postgresql

Web GIS - ArcGIS Online, CARTO

Custom software - leaflet web maps

Why R for Geospatial Data?

Why R for Geospatial Data?

You already use R

Reproducibility

Free & Open Source

Cutting edge

Thousands of Cool add-ons

  • Shiny, rleaflet

Geospatial Data File formats

Common File Formats

Vector points, lines & polygons:

Raster grids

  • TIFF, GeoTiff
  • JPEG, JPEG2000
  • ASCII Grid

See GIS file formats

ESRI Shapefile

This is one of the most, if not the most common spatial vector data file formats.

Old but everywhere!

Gotchas: 2GB limit, 10 char column names, poor unicode support

CSV (Comma Separated Values) Files

The simplest, most common format for point data

"ID","name”,”x”,”y”,”taste","price","crowded","food"
"1","babette",-122.255374,37.868428,10,4,1,1
"2","musical",-122.260698,37.868383,7,3.25,1,1
"3","starbucks",-122.266057,37.870441,6,2.95,1,0
"4","yalis",-122.266385,37.873528,7,2.95,0,0
"5","berkeleyesp",-122.268681,37.873664,3,3.25,1,0
"6","fertile",-122.268863,37.874934,5,3.25,0,1

Geospatial Data in R

Geospatial Data in R

There are many approaches to and packages for working with geospatial data in R.

One approach is to keep it simple and store geospatial data in a data frame.

This approach is most common when the data are point data in CSV files.

About the Sample Data

San Francisco Open Data Portal https://data.sfgov.org

SF Property Tax Rolls

This data set includes the Office of the Assessor-Recorder’s secured property tax roll spanning from 2007 to 2016.

We are using this as a proxy for home values.

Load the CSV file into a data frame

sfhomes <- read.csv('data/sf_properties_25ksample.csv')  
head(sfhomes,6)

Explore the data

class(sfhomes) # what type of data object?
dim(sfhomes) # how many rows and columns
str(sfhomes) # display the structure of the object
head(sfhomes) # take a look at the first 10 records
summary(sfhomes) # explore the range of values
hist(sfhomes$totvalue)  # plot he range of values for the totvalue column

Plot of points

plot(sfhomes$lon, sfhomes$lat) # using base plot function

Nice Maps with ggplot2

library(ggplot2)

ggplot() + geom_point(data=sfhomes, aes(lon,lat), col="red", size=1)

Color points by totvalue

ggplot() + geom_point(data=sfhomes, aes(lon,lat, col=totvalue))

Subset the Data

for SalesYear equal to 2015

sfhomes15 <- subset(sfhomes, as.numeric(SalesYear) == 2015)

nrow(sfhomes15) # How many records?
[1] 5849

Always Explore

hist(sfhomes15$totvalue) # What is the distribution of totvalue?

Challenge - Make a map

of sfhomes15 using ggplot and set the color to the totvalue column.

ggplot() + geom_point(data=sfhomes15, aes(x=lon, y=lat, col=totvalue))

ggmap extends ggplot

Create basemaps on which you can display your data.

Geocode place names and addresses to get point coordinates.

and more…

ggmap

Load the libary

library(ggmap)
Google Maps API Terms of Service: http://developers.google.com/maps/terms.
Please cite ggmap if you use it: see citation("ggmap") for details.

ggmap

Some functionality may require you to register a Google API key See this StackOverflow discussion

#devtools::install_github("dkahle/ggmap")
#library(ggmap)
#register_google(key="XXXXX") # your key here

get_map

Fetch map data (default=Google) to plot using get_map

Use ?get_map for details

sf_map <- get_map("San Francisco, CA")  
Source : https://maps.googleapis.com/maps/api/staticmap?center=San+Francisco,+CA&zoom=10&size=640x640&scale=2&maptype=terrain&language=en-EN&key=AIzaSyDHsYNZmqmTNvFn36tq470iRyXgQEU-PSE
Source : https://maps.googleapis.com/maps/api/geocode/json?address=San%20Francisco%2C%20CA&key=AIzaSyDHsYNZmqmTNvFn36tq470iRyXgQEU-PSE

This use of the command leverages the Google Geocoding API.

Display the ggmap of SF

ggmap(sf_map)

Syntax similar to ggplot

ggmap(sf_map) +
  geom_point(data=sfhomes15, aes(x=lon, y=lat, col=totvalue))

Customize get_map

Create a basemap zoomed to the extent of our data

# Get the center point of the data
sf_ctr <- c(lon = mean(sfhomes15$lon), lat = mean(sfhomes15$lat))
sf_ctr  # take a look
       lon        lat 
-122.43167   37.76017 
# create the map
sf_basemap <- get_map(sf_ctr, zoom=12, scale=1)
Source : https://maps.googleapis.com/maps/api/staticmap?center=37.760172,-122.431673&zoom=12&size=640x640&scale=1&maptype=terrain&language=en-EN&key=AIzaSyDHsYNZmqmTNvFn36tq470iRyXgQEU-PSE

Plot the basemap with the data overlay

ggmap(sf_basemap) +
  geom_point(data=sfhomes15, aes(x=lon, y=lat, col=totvalue))

Change the basemap

See ?get_map to get available options

sf_basemap_lite <- get_map(sf_ctr, zoom=12, scale=1, 
                            maptype = "toner-lite", source="stamen")
Source : https://maps.googleapis.com/maps/api/staticmap?center=37.760172,-122.431673&zoom=12&size=640x640&scale=2&maptype=terrain&key=AIzaSyDHsYNZmqmTNvFn36tq470iRyXgQEU-PSE
Source : http://tile.stamen.com/toner-lite/12/653/1582.png
Source : http://tile.stamen.com/toner-lite/12/654/1582.png
Source : http://tile.stamen.com/toner-lite/12/655/1582.png
Source : http://tile.stamen.com/toner-lite/12/656/1582.png
Source : http://tile.stamen.com/toner-lite/12/653/1583.png
Source : http://tile.stamen.com/toner-lite/12/654/1583.png
Source : http://tile.stamen.com/toner-lite/12/655/1583.png
Source : http://tile.stamen.com/toner-lite/12/656/1583.png
Source : http://tile.stamen.com/toner-lite/12/653/1584.png
Source : http://tile.stamen.com/toner-lite/12/654/1584.png
Source : http://tile.stamen.com/toner-lite/12/655/1584.png
Source : http://tile.stamen.com/toner-lite/12/656/1584.png

Change the basemap

ggmap(sf_basemap_lite) +
  geom_point(data=sfhomes15, aes(x=lon, y=lat, col=totvalue))

Facets / Small Multiples / Micro Maps

# Let's look at last 5 years
sfhomes2010_15 <- subset(sfhomes, as.numeric(SalesYear) > 2009)

ggmap(sf_basemap_lite) +
  geom_point(aes(lon, lat, col=totvalue), data = sfhomes2010_15 )  +
  facet_wrap(~ SalesYear)

Facet/ Small Multiples / Micro Maps

ggmap(sf_basemap_lite) +
  geom_point(aes(lon, lat, col=totvalue), data = sfhomes2010_15 )  +
  facet_wrap(~ SalesYear)

Challenge

Redo above facet map with the following changes:

  • Use data from 1995 - 1999
  • Use a different basemap (eg maptype=“terrain”)

Challenge

sfhomes1995_1999 <- subset(sfhomes, (as.numeric(SalesYear) >= 1995) & (as.numeric(SalesYear) <= 1999))

ggmap(sf_basemap_lite) +
  geom_point(aes(lon, lat, col=totvalue), data = sfhomes1995_1999 )  +
  facet_wrap(~ SalesYear)

GGMap and GGPlot are great!

BUT!

There are limits to what you can do with geospatial data stored in a dataframe

and mapping the data with ggplot and ggmap

Can’t read & plot geospatial data files

Shapefile is the most common format for non-point geospatial data.

Can’t directly read or plot a shapefile with data frames/ggplot/ggmap

Can’t transform Coordinate Data

Spatial Analysis

  • What properties are within walking distance (.25 miles) of a BART station?

  • Average sales price by census tract?

Most spatial operations require spatial objects and methods

Spatial Data Objects in R

sp Package

The sp Package

Classes and Methods for Spatial Data

The SP package is most commonly used to construct and manipulate spatial data objects in R.

Hundreds of other R packages that do things with spatial data typically build on SP objects.

sp package

sp package

Take a look at the different types of spatial object classes supported by sp

library(sp)
getClass("Spatial") 
Class "Spatial" [package "sp"]

Slots:
                              
Name:         bbox proj4string
Class:      matrix         CRS

Known Subclasses: 
Class "SpatialPoints", directly
Class "SpatialMultiPoints", directly
Class "SpatialGrid", directly
Class "SpatialLines", directly
Class "SpatialPolygons", directly
Class "SpatialPointsDataFrame", by class "SpatialPoints", distance 2
Class "SpatialPixels", by class "SpatialPoints", distance 2
Class "SpatialMultiPointsDataFrame", by class "SpatialMultiPoints", distance 2
Class "SpatialGridDataFrame", by class "SpatialGrid", distance 2
Class "SpatialLinesDataFrame", by class "SpatialLines", distance 2
Class "SpatialPixelsDataFrame", by class "SpatialPoints", distance 3
Class "SpatialPolygonsDataFrame", by class "SpatialPolygons", distance 2

```

sp Vector Objects

Geometry Spatial Object Spatial Object with Attributes
Points SpatialPoints SpatialPointsDataFrame
Lines SpatialLines SpatialLinesDataFrame
Polygons SpatialPolygons SpatialPolygonsDataFrame

We use the S*DF objects most frequently!

From Data Frame to SpatialPointsDataFrame

From Data Frame to SpatialPointsDataFrame

Let’s transform the sfhomes15 data frame to an sp object of type SpatialPointsDataFrame

sp::coordinates()

Use the sp::coordinates() method - Sets or retrieves spatial coordinates

When transforming a DF to SPDF, requires - the object that will get the coordinates - the names of the columns that contain the X and Y coordinates

Data Frame to SPDF

# First make a copy of the data frame
sfhomes15_sp <- sfhomes15

coordinates(sfhomes15_sp) <- c('lon','lat') # ORDER MATTERS!!

class(sfhomes15_sp) # check it
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
SpatialPointsDataFrame

sp::coordinates()

You transformed a data frame to an SPDF using:

coordinates(sfhomes15_sp) <- c('lon','lat')

Now try this:

coordinates(sfhomes15_sp)

Compare the SPDF to DF

str(sfhomes15) # the data frame
'data.frame':   5849 obs. of  19 variables:
 $ FiscalYear      : int  2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
 $ SalesDate       : Factor w/ 6639 levels "1920-01-30","1920-01-31",..: 6454 6542 6434 6424 6424 6420 6431 6428 6578 6578 ...
 $ Address         : Factor w/ 166180 levels "#200 0530-SANCHEZ             ST0000",..: 99415 108915 112360 112366 163280 72633 112370 142597 99359 99358 ...
 $ YearBuilt       : int  1992 1939 2014 2014 1900 NA 2014 NA 1992 1992 ...
 $ NumBedrooms     : int  0 0 1 1 0 0 2 0 0 0 ...
 $ NumBathrooms    : int  0 0 1 1 0 0 2 0 0 0 ...
 $ NumRooms        : int  0 5 5 5 10 0 6 0 0 0 ...
 $ NumStories      : int  0 1 1 1 2 0 1 0 0 0 ...
 $ NumUnits        : int  1 1 1 1 1 1 1 1 1 1 ...
 $ AreaSquareFeet  : int  535 1150 772 799 7944 0 780 0 410 385 ...
 $ ImprovementValue: int  66140 71351 21336 21925 44282 0 25607 0 91929 91929 ...
 $ LandValue       : int  37447 34682 86048 88423 71728 121830 103271 129952 48607 48607 ...
 $ Neighborhood    : Factor w/ 41 levels "","Bayview Hunters Point",..: 14 36 20 20 20 29 20 4 14 14 ...
 $ Location        : Factor w/ 124331 levels "(37.7081643340418, -122.451068309854)",..: 111624 68529 89779 89779 65168 16032 89779 86880 111624 111624 ...
 $ SupeDistrict    : int  5 4 9 9 9 9 9 8 5 5 ...
 $ totvalue        : int  103587 106033 107384 110348 116010 121830 128878 129952 140536 140536 ...
 $ SalesYear       : int  2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
 $ lat             : num  37.8 37.8 37.8 37.8 37.8 ...
 $ lon             : num  -122 -122 -122 -122 -122 ...

SPDF

str(sfhomes15_sp) # the SPDF
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 5849 obs. of  17 variables:
  .. ..$ FiscalYear      : int [1:5849] 2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
  .. ..$ SalesDate       : Factor w/ 6639 levels "1920-01-30","1920-01-31",..: 6454 6542 6434 6424 6424 6420 6431 6428 6578 6578 ...
  .. ..$ Address         : Factor w/ 166180 levels "#200 0530-SANCHEZ             ST0000",..: 99415 108915 112360 112366 163280 72633 112370 142597 99359 99358 ...
  .. ..$ YearBuilt       : int [1:5849] 1992 1939 2014 2014 1900 NA 2014 NA 1992 1992 ...
  .. ..$ NumBedrooms     : int [1:5849] 0 0 1 1 0 0 2 0 0 0 ...
  .. ..$ NumBathrooms    : int [1:5849] 0 0 1 1 0 0 2 0 0 0 ...
  .. ..$ NumRooms        : int [1:5849] 0 5 5 5 10 0 6 0 0 0 ...
  .. ..$ NumStories      : int [1:5849] 0 1 1 1 2 0 1 0 0 0 ...
  .. ..$ NumUnits        : int [1:5849] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ AreaSquareFeet  : int [1:5849] 535 1150 772 799 7944 0 780 0 410 385 ...
  .. ..$ ImprovementValue: int [1:5849] 66140 71351 21336 21925 44282 0 25607 0 91929 91929 ...
  .. ..$ LandValue       : int [1:5849] 37447 34682 86048 88423 71728 121830 103271 129952 48607 48607 ...
  .. ..$ Neighborhood    : Factor w/ 41 levels "","Bayview Hunters Point",..: 14 36 20 20 20 29 20 4 14 14 ...
  .. ..$ Location        : Factor w/ 124331 levels "(37.7081643340418, -122.451068309854)",..: 111624 68529 89779 89779 65168 16032 89779 86880 111624 111624 ...
  .. ..$ SupeDistrict    : int [1:5849] 5 4 9 9 9 9 9 8 5 5 ...
  .. ..$ totvalue        : int [1:5849] 103587 106033 107384 110348 116010 121830 128878 129952 140536 140536 ...
  .. ..$ SalesYear       : int [1:5849] 2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
  ..@ coords.nrs : int [1:2] 19 18
  ..@ coords     : num [1:5849, 1:2] -122 -122 -122 -122 -122 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:5849] "770" "1345" "1603" "2300" ...
  .. .. ..$ : chr [1:2] "lon" "lat"
  ..@ bbox       : num [1:2, 1:2] -122.5 37.7 -122.4 37.8
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "lon" "lat"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
  .. .. ..@ projargs: chr NA

SPDF Objects

SPDF Objects

You can see from str(sfhomes) that a SPDF object is a collection of slots or components. The key ones are:

  • @data data frame of attributes that describe each location
  • @coords the coordinates for each geometric object - here points
  • @bbox the min and max bounding coordinates
  • @proj4string the coordinate reference system defintion as a string

Explore the object in the Environment window

SPDF Slots

Review the output of each of these:

summary(sfhomes15_sp)
head(sfhomes15_sp@data)
class(sfhomes15_sp@data)

sfhomes15_sp@bbox
bbox(sfhomes15_sp)

head(sfhomes15_sp@coords)
head(sfhomes15_sp$lat)
head(sfhomes15_sp$lon)

sfhomes15_sp@proj4string
proj4string(sfhomes15_sp)

Take a closer look

Look at sfhomes15_sp in the environment window

What’s missing

Are all the columns that were present in sfhomes15 also in sfhomes15_sp?

Is there a slot in sfhomes15_sp without data?

What is the CRS of the data?

proj4string(sfhomes15_sp) # get a CRS object
[1] NA

NA

Map an SpatialPointsDataFrame

plot(sfhomes15_sp)  # using sp::plot

So…..?

Recap

We created great maps of sfhomes point data with ggplot and ggmap.

Then we created a simple map of the SPDF with plot.

We aren’t seeing the value of sp objects just yet.

Let’s add more geospatial data

Reading in Geospatial Data

There’s an R package for that!

rgdal

rgdal is an R port of the powerful and widely used GDAL library.

It is the most commonly used R library for importing and exporting spatial data.

  • OGR: for vector data: readOGR() and writeOGR()

  • GDAL for raster data: readGDAL() and writeGDAL()

rgdal

library(rgdal)
Warning: package 'rgdal' was built under R version 3.4.3
rgdal: version: 1.2-16, (SVN revision 701)
 Geospatial Data Abstraction Library extensions to R successfully loaded
 Loaded GDAL runtime: GDAL 2.1.3, released 2017/20/01
 Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rgdal/gdal
 GDAL binary built with GEOS: FALSE 
 Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
 Path to PROJ.4 shared files: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rgdal/proj
 Linking to sp version: 1.2-5 
# See what file types are supported by rgdal drivers
# ogrDrivers()$name

Getting help

gdal.org

`?readOGR

For more info on working with rgdal to load different types of spatial data in R see this excellent tutorial by Zev Ross.

Read in a Shapefile with the boundary of San Francisco

Take a look at the file(s)

dir("data", pattern="sf_boundary")
[1] "sf_boundary.dbf" "sf_boundary.prj" "sf_boundary.shp" "sf_boundary.shx"
sf_boundary.dbf

sf_boundary.prj

sf_boundary.shp

sf_boundary.shx

Read in Shapefile

sfboundary <- readOGR(dsn="data",layer="sf_boundary")
OGR data source with driver: ESRI Shapefile 
Source: "data", layer: "sf_boundary"
with 1 features
It has 3 fields
# or
# sfboundary <- readOGR("data","sf_boundary")
# but not
#sfboundary <- readOGR(dsn="data/",layer="sf_boundary")

Check out the data structure

What type of sp object is sfboundary? How many features are in the object?

class(sfboundary)
str(sfboundary) 
head(sfboundary@data)  

Explore the object in the Envi window

Make a quick plot of sfboundary

How?

Make a quick plot of sfboundary

plot(sfboundary)

Demonstration - A more complex SpatialPolygonsDataFrame

library(tigris)
calcounties <- counties(state="California", cb=T)
class(calcounties)
sf_cen <- subset(calcounties, COUNTYFP == "075")
plot(sf_cen)
head(sf_cen@data)
# Now look in Envi Window

What is the the sfboundary CRS

Is it a geographic or projected CRS?

proj4string(sfboundary)

Map both sfboundary & sfhomes15_sp

plot(sfboundary)
points(sfhomes15_sp, col="red")

Map both sfboundary & sfhomes15_sp

Where are the points? What’s wrong?

plot(sfboundary)
points(sfhomes15_sp, col="red")

What’s Wrong?

Compare the CRSs, are they the same?

proj4string(sfboundary)
proj4string(sfhomes15_sp)
proj4string(sfboundary) == proj4string(sfhomes15_sp)

Compare the CRSs, are they the same?

proj4string(sfboundary)
[1] "+proj=utm +zone=10 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0"
+proj=utm +zone=10 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
proj4string(sfhomes15_sp)
[1] NA

NA

proj4string(sfboundary) == proj4string(sfhomes15_sp)
[1] NA

Compare the coordinate values

sfboundary@bbox
        min       max
x  542696.6  556659.9
y 4173563.7 4185088.6
sfhomes15_sp@bbox
           min        max
lon -122.51072 -122.36964
lat   37.70821   37.80612

CRS Problems

The #1 reason…

CRS Definitions

All sp objects should have a defined CRS

If not, one needs to be assigned to the object - This is called defining a projection. - This doesn’t change the coordinates.

CRS Transformations

All sp objects should have the same CRS.

  • When they don’t, they need to be transformed to a common CRS.

  • This is also called a projection transformation,
    • or projecting or reprojection.
  • Projection transformation returns a new spatial object with the transformed coordinates

CRS Definitions and Transformations

Geospatial-aware software will have a database of definitions for thousands of Earth referenced coordinate systems

Defining a CRS

We need to define the CRS of what sp object? - sfboundary or sfhomes15_sp?

We need to know - the appropriate CRS for the data - how to define the CRS - how to assign it to the sp object

Define a CRS

sp includes the CRS() function to define a CRS

  • Two ways
# use an EPSG code
proj4string(sfhomes15_sp) <- CRS("+init=epsg:4326") 

# or enter the proj4 string
# proj4string(sfhomes15_sp) <- CRS("+proj=longlat 
#                               +ellps=WGS84 +datum=WGS84 +no_defs")  

check it

proj4string(sfhomes15_sp)
[1] "+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0

Notes

  • proj4string() can get or set the CRS
  • proj4 is a library for managing map projections and CRSs
  • epsg codes are used as short-hand for CRSs definitions

Compare the CRSs, AGAIN

proj4string(sfboundary)
[1] "+proj=utm +zone=10 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0"
+proj=utm +zone=10 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
proj4string(sfhomes15_sp)
[1] "+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
proj4string(sfboundary) == proj4string(sfhomes15_sp)
[1] FALSE

Transforming a CRS

Transform the CRS

Use sp function spTransform

Requires as input:

  • a sp object to transform with a defined CRS

  • a target CRS

Outputs a new spatial object with coordinate data in the target CRS

  • It does not change the input data

Transform sfboundary

from UTM10 CRS to WGS84 (why?)

sfboundary_lonlat <- spTransform(sfboundary, CRS("+init=epsg:4326"))

# or
# sfboundary_lonlat <- spTransform(sfboundary, 
#                              CRS(proj4string(sfhomes15_sp)))

How do these two spTransform approaches differ?

Did it work?

How will we know?

Do the CRSs match?

proj4string(sfhomes15_sp) == proj4string(sfboundary_lonlat)

Overlay the data in space

plot(sfboundary_lonlat)
points(sfhomes15_sp, col="red")
points(sfhomes15_sp[sfhomes15_sp$totvalue<1000000,], col="green")

Overlay the data in space

Woo-hoo!

So….

We can transform sp objects to the same CRS for mapping and spatial analysis (we’ll get there!)

Save sfboundary_lonlat

Use writeOGR to save sfboundary_lonlat to a new shapefile

See ?writeOGR for help

# write transformed data to a new shapefile 
writeOGR(sfboundary_lonlat, 
          dsn = "data", 
          layer = "sfbounary_lonlat", 
          driver="ESRI Shapefile")

# is it there?
dir("data")

Projections, CRS, oh my!

We want all data in the same CRS

Which one is best?

Common CRS Codes

Geographic CRSs

  • 4326 Geographic, WGS84 (default for lon/lat)

  • 4269 Geographic, NAD83 (USA Fed agencies like Census)

Projected CRSs

  • 5070 USA Contiguous Albers Equal Area Conic

  • 3310 CA ALbers Equal Area

  • 26910 UTM Zone 10, NAD83 (Northern Cal)

  • 3857 Web Mercator (web maps)

Finding CRS Codes

See http://spatialreference.org/

Use this site to find EPSG codes and proj4 CRS strings

QUESTIONS?

Break…..

Mapping Spatial Objects

So far we have created maps with

base::plot, ggplot, ggmap for geospatial data in data frames

  • great for creating maps given these types of data

sp::plot for sp objects

  • meh, but great for a quick look at spatial data

There is also sp::spplot

Use it to create quick maps

Can be used to create great maps

  • BUT complex, non-intuitive syntax = long ugly code

See examples in sp Gallery: Plotting maps with sp

spplot

# map of the sfhomes data by totalvaue
spplot(sfhomes15_sp,"totvalue")

tmap

tmap

tmap stands for thematic map

Great maps with less code than the alternatives

Syntax should be familar to ggplot2 users, but simpler

Relatively easy to create interactive maps

tmap starting points

tmap

Load the library

library(tmap)
Warning: package 'tmap' was built under R version 3.4.3

Quick tmap (qtm)

qtm(sfhomes15_sp)

tm_symbols
#FFFFFF00
blank
#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000

#000000
#666666
#666666
#000000
#666666
#000000
#666666
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
sfhomes15_sp
metric
segment

midpoint
none
metric
segment

midpoint
long@lat38
km

Quick Interactive tmap

tmap_mode("view")
tmap mode set to interactive viewing
qtm(sfhomes15_sp)

Reset the mode to static plot

tmap_mode("plot")
tmap mode set to plotting

Challenge

Create a static qtm of sfboundary_lonlat

  • bonus, set the border color to black and the fill to beige

See ?qtm for description of all options

sfboundary_lonlat quickmap

qtm(sfboundary_lonlat, borders="black", fill="beige")

tm_fill
#000000
solid
#F5F5DC
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
sfboundary_lonlat
metric
segment

midpoint
none
metric
segment

midpoint
long@lat38
km

Crafting complex tmaps

tmap Shapes and Graphic Elements

tmap’s flexibility comes in how it intitively allows you to layer spatial data and style the layers by data attributes

Use tm_shape(<sp_object>) to specifiy a geospatial data layer

Add + tm_<element>(...) to style the layer by data values

…and other options for creating a publication ready map

Exploring tmap functionality

?tmap_shape

?tmap_element

“Slow” tmaps

tm_shape(sfboundary_lonlat) + tm_polygons(col="beige", border.col="black")

tm_fill
#000000
solid
#F5F5DC
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
sfboundary_lonlat
metric
segment

midpoint
none
metric
segment

midpoint
long@lat38
km

tmap of totvalue

tm_shape(sfhomes15_sp) + tm_dots(col="totvalue", size=.5)

totvalue
tm_symbols
#FFFFFF00
blank
#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202
#666666
0 to 500,000

500,000 to 1,000,000

1,000,000 to 1,500,000

1,500,000 to 2,000,000

2,000,000 to 2,500,000

2,500,000 to 3,000,000
#FFF8C4

#FEE494

#FEC24D

#FB9225

#E3650E

#B74202
#666666
#FB9225
#666666
#FB9225
#666666
totvalue
totvalue
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
sfhomes15_sp
metric
segment

midpoint
none
metric
segment

midpoint
long@lat38
km

Challenge

Make the previous map interactive - NOTE: columnn names must be quoted!

Zoom in on light & dark colored points to see if the corressponding totvalue makes sense.

Reset the mode to static

tmap_mode("plot")
tmap mode set to plotting

Overlaying layers

tm_shape(sfboundary_lonlat) + tm_polygons(col="black", border.col="grey") + 
   tm_shape(sfhomes15_sp) + tm_dots(col="totvalue", size=.5)

tm_fill
#BEBEBE
solid
#000000
to
Less

than
or

more
totvalue
tm_symbols
#FFFFFF00
blank
#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FFF8C4

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEE494

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FEC24D

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#FB9225

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#E3650E

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202

#B74202
#666666
0 to 500,000

500,000 to 1,000,000

1,000,000 to 1,500,000

1,500,000 to 2,000,000

2,000,000 to 2,500,000

2,500,000 to 3,000,000
#FFF8C4

#FEE494

#FEC24D

#FB9225

#E3650E

#B74202
#666666
#FB9225
#666666
#FB9225
#666666
totvalue
totvalue
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
sfboundary_lonlat

sfhomes15_sp
metric
segment

midpoint
none
metric
segment

midpoint
long@lat38
km

Challenge

Redo the last map but

change the legend title to “San Francisco Home Sales, 2015”

  • hint: title=

tmap and CRSs

tmap and CRSs

We have been mapping data in WGS84 (lon/lat) CRS.

Not a great idea for static maps of larger areas as distortion becomes evident.

Let’s explore that distortion and how to address with tmap

US States

Let’s load and map data for US states.

Data are in the file data/us_states_pop.shp

Challenge

Use readOGR to load data/us_states_pop.shp into an sp object named us_states

Read in & plot the Data

us_states <- readOGR("./data", "us_states_pop")
OGR data source with driver: ESRI Shapefile 
Source: "./data", layer: "us_states_pop"
with 49 features
It has 4 fields

Take a quick look

qtm(us_states)

tm_fill
#666666
solid
#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9

#D9D9D9
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
us_states
metric
segment

midpoint
none
metric
segment

midpoint
long@lat37
km

Questions

Review us_states with the sp commands we used earlier and / or explore in the Environment window.

  • What type of sp object is us_states

  • How many features does it contain?

  • How many attributes describe those features?

  • What is the CRS?

Customizing the display

tm_shape(us_states) + tm_polygons(col="grey", border.col = "white")

tm_fill
#FFFFFF
solid
#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
us_states
metric
segment

midpoint
none
metric
segment

midpoint
long@lat37
km

CRS and Shape

Notice anything odd about shape of USA?

tm_fill
#FFFFFF
solid
#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
us_states
metric
segment

midpoint
none
metric
segment

midpoint
long@lat37
km

Dynamically Transforming the CRS

tm_shape(us_states, projection="+init=epsg:5070") + tm_polygons(col="grey", border.col = "white")

tm_fill
#FFFFFF
solid
#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE
to
Less

than
or

more
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
us_states
metric
segment

midpoint
none
metric
segment

midpoint
m
km

What’s happening here?

tm_shape(us_states, projection="+init=epsg:5070") + tm_polygons(col="grey", border.col = "white") +
tm_shape(us_states) + tm_borders(col="purple") 

tm_fill
#FFFFFF
solid
#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE

#BEBEBE
to
Less

than
or

more
tm_fill
#A020F0
solid
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
us_states

us_states
metric
segment

midpoint
none
metric
segment

midpoint
m
km

Dynamic CRS Transformations

Also called On-the-fly reprojection in ArcGIS & QGIS

Very cool!

BUT, if you want to use data in a different CRS it is best to transform it.

Challenge

  • Transform the us_states data to the USA Contiguous Albers CRS (5070),

  • Save output as a new SpatialPolygonsDataFrame called us_states_5070

us_states_5070

us_states_5070 <- spTransform(us_states, CRS("+init=epsg:5070"))

Plotting the Transformed Data

tm_shape(us_states_5070) + tm_polygons(col="beige") +
  tm_shape(us_states) + tm_borders(col="purple")

tm_fill
#666666
solid
#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC

#F5F5DC
to
Less

than
or

more
tm_fill
#A020F0
solid
#FFFFFF
YlOrBr
RdYlGn
Set3
black
#000000
plain
#000000
WGS84
#FFFFFF
right
vertical
left

bottom
to
Less

than
or

more
#000000
left

top
#000000
#000000
#CCCCCC
#000000
left
bottom
right

bottom
left

bottom
bg.color

aes.color

aes.palette

attr.color

saturation

sepia.intensity

fontfamily

frame.double.line

compass.type

space.color
grey85

grey40

grey60

black

red

black

grey75
CartoDB.Positron

OpenStreetMap

Esri.WorldTopoMap
left

top
topright
Missing
us_states_5070

us_states
metric
segment

midpoint
none
metric
segment

midpoint
m
km

Questions?

Recap

  • Geospatial Data in R
  • CSV > Data Frame > ggplot/ggmap
  • GDAL, readOGR, writeOGR
  • Data Frame to SDPF
  • CRS definitions and transformations
  • Overlays
  • tmap

End of Part I

IMPORTANT ANNOUNCEMENT

sf package

The sf, or simple features package in R has many improvements

Based on open standards for specifying spatial data

ggplot and ggmap can map sf spatial objects

But most spatial packages still depend on sp

So, live on the bleeding edge or check back in a year or so.

Output code to script

library(knitr)
purl("r-geospatial-workshop-sp2018-pt1.Rmd", output = "scripts/r-geospatial-workshop-sp2018-pt1.r", documentation = 1)
LS0tCnRpdGxlOiAiR2Vvc3BhdGlhbCBEYXRhIGluIFIsIHB0MSIKYXV0aG9yOiAiUGF0dHkgRnJvbnRpZXJhIgpkYXRlOiAiU3ByaW5nIDIwMTgiCm91dHB1dDogIGh0bWxfbm90ZWJvb2sgI2lvc2xpZGVzX3ByZXNlbnRhdGlvbgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFQpCmBgYAoKIyMgUFJFUAoKMS4gaHR0cHM6Ly9naXRodWIuY29tL2RsYWItZ2VvL3ItZ2Vvc3BhdGlhbC13b3Jrc2hvcAoKLSBDbGljayAqQ2xvbmUgb3IgRG93bmxvYWQqIGFuZCBkb3dubG9hZCB0aGUgemlwIGZpbGUKLSBVcHppcCB0aGUgemlwIGZpbGUgYW5kIG1ha2UgYSBub3RlIG9mIHRoZSBmb2xkZXIgaW4gd2hpY2ggaXQgaXMgbG9jYXRlZAoKMi4gT3BlbiBSU3R1ZGlvIGFuZCBzdGFydCBhIG5ldyBzY3JpcHQKCjMuIEZvbGxvdyBhbG9uZyBieSBvcGVuaW5nIGByLWdlb3NwYXRpYWwtd29ya3Nob3AtcHQxLXNwMjAxOC5odG1sYAoKNC4gSW5zdGFsbCByZXF1aXJlZCBsaWJyYXJpZXMKCmBgYHtyLCBldmFsPUZ9Cmluc3RhbGwucGFja2FnZXMoCiAgYygic3AiLCJyZ2RhbCIsInRtYXAiLCJjbGFzc0ludCIsIlJDb2xvckJyZXdlciIsCiAgICAiZ2dwbG90MiIsImxlYWZsZXQiLCAiZ2dtYXAiKSwgZGVwZW5kZW5jaWVzPVRSVUUKKQpgYGAKCiMgR2Vvc3BhdGlhbCBEYXRhIGluIFIKCiMjIFdvcmtzaG9wIEdvYWxzCgoqIEludHJvIHRvIGdlb3NwYXRpYWwgZGF0YSAKCiogSW50cm8gdG8gY29vcmRpbmF0ZSByZWZlcmVuY2Ugc3lzdGVtcyAoQ1JTKQoKKiBDbGFzc2VzICYgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIHNwYXRpYWwgZGF0YSBpbiBSCgoqIE1hcHBpbmcgZ2Vvc3BhdGlhbCBkYXRhCgoqIFByYWN0aWNlCgoKIyMgQWJvdXQgTWUKClBhdHR5IEZyb250aWVyYQoKW2RsYWIuYmVya2VsZXkuZWR1XShodHRwOi8vZGxhYi5iZXJrZWxleS5lZHUpCgojIyBBYm91dCB5b3UKCldobyBhcmUgeW91PwoKV2h5IGFyZSB5b3UgaGVyZT8KCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCjEuIEdldCB0aGUgd29ya3Nob3AgZmlsZXMKCmh0dHBzOi8vZ2l0aHViLmNvbS9kbGFiLWdlby9yLWdlb3NwYXRpYWwtd29ya3Nob3AKCi0gQ2xpY2sgKkNsb25lIG9yIERvd25sb2FkKiBhbmQgZG93bmxvYWQgdGhlIHppcCBmaWxlCgotIFVwemlwIHRoZSB6aXAgZmlsZSBhbmQgbWFrZSBhIG5vdGUgb2YgdGhlIGZvbGRlciBpbiB3aGljaCBpdCBpcyBsb2NhdGVkCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCjIuIE9wZW4gUlN0dWRpbyBhbmQgc3RhcnQgYSBuZXcgc2NyaXB0CgozLiBGb2xsb3cgYWxvbmcgYnkgb3BlbmluZyBgci1nZW9zcGF0aWFsLXdvcmtzaG9wLXB0MS1zcDIwMTguaHRtbGAKCiMjIEdldHRpbmcgU3RhcnRlZAoKNC4gSW4gUlN0dWRpbywgaW5zdGFsbCByZXF1aXJlZCBsaWJyYXJpZXMKCmBgYHtyLCBldmFsPUZ9CgppbnN0YWxsLnBhY2thZ2VzKAogIGMoInNwIiwicmdkYWwiLCJ0bWFwIiwiY2xhc3NJbnQiLCJSQ29sb3JCcmV3ZXIiLAogICAgImdncGxvdDIiLCJsZWFmbGV0IiwgImdnbWFwIiksIGRlcGVuZGVuY2llcz1UUlVFCikKCmBgYAoKCiMgR2VvZ3JhcGhpYyBEYXRhCgoKIyMgR2VvZ3JhcGhpYyBEYXRhCgphcmUgZGF0YSBhYm91dCAqbG9jYXRpb25zKiBvbiBvciBuZWFyIHRoZSBzdXJmYWNlIG9mIHRoZSAqRWFydGgqLgoKPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvZS9lZS9BbmF0b25lX1dBLmpwZy82NDBweC1BbmF0b25lX1dBLmpwZyI+PC9pbWc+CgoKIyMgUGxhY2UgbmFtZXMKCmNvbnZleSBnZW9ncmFwaGljIGluZm9ybWF0aW9uIGJ1dCBkb24ndCAqKnVuYW1iaWdvdXNseSoqIHNwZWNpZnkgbG9jYXRpb24KCjxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2UvZWUvQW5hdG9uZV9XQS5qcGcvNjQwcHgtQW5hdG9uZV9XQS5qcGciPjwvaW1nPgoKCiMjIEdlb3NwYXRpYWwgZGF0YQoKcmVwcmVzZW50IGxvY2F0aW9uIGdlb21ldHJpY2FsbHkgd2l0aCAqKmNvb3JkaW5hdGVzKioKCmA0Ni4xMzA0NzksIC0xMTcuMTM0MTY3YAogIAo8aW1nIHdpZHRoPSI2MDBweCIgc3JjPSJpbWFnZXMvYW5hdG9uZV9nb29nbGUucG5nIj48L2ltZz4KCgojIyBDb29yZGluYXRlIFJlZmVyZW5jZSBTeXN0ZW0KCkNvb3JkaW5hdGVzIGluZGljYXRlIHNwZWNpZmljIGxvY2F0aW9ucyBvbiB0aGUgRWFydGggd2hlbiBhc3NvY2lhdGVkIHdpdGggYSBnZW9ncmFwaGljIGBjb29yZGluYXRlIHJlZmVyZW5jZSBzeXN0ZW1gIG9yICoqQ1JTKiouIAoKPGltZyB3aWR0aD0iNjAwcHgiIHNyYz0iaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi82LzYyL0xhdGl0dWRlX2FuZF9Mb25naXR1ZGVfb2ZfdGhlX0VhcnRoLnN2Zy82NDBweC1MYXRpdHVkZV9hbmRfTG9uZ2l0dWRlX29mX3RoZV9FYXJ0aC5zdmcucG5nIj48L2ltZz4KCiMjIEdlb2dyYXBoaWMgQ29vcmRpbmF0ZSBSZWZlcmVuY2UgU3lzdGVtcwoKc3BlY2lmeSAKCjEuIHRoZSBzaGFwZSBvZiB0aGUgRWFydGggYXMgdGhlIG1ham9yICYgbWlub3IgYXhlcyBvZiBhbiBlbGxpcHNvaWQKMi4gdGhlIG9yaWdpbiAoMCwwKSAtIGVxdWF0b3IgKH5YKSwgcHJpbWUgbWVyaWRpYW4gKH5ZKQozLiBmaXQgb2YgdGhlIENSUyB0byB0aGUgRWFydGggKGNlbnRlciBvZiB0aGUgZWFydGgpLCBha2EgRGF0dW0KNC4gdW5pdHMsIGVnIGxhdC9sb24gZXhwcmVzc2VkIGFzIGRlY2ltYWwgZGVncmVlcyBvciBETVMKCkJlY2F1c2Ugb2YgdmFyaWF0aW9ucyBpbiAxLTMsIHRoZXJlIGFyZSAqKm1hbnkqKiBnZW9ncmFwaGljIENSU3MhCgojIyBXR1M4NAoKVGhlIFtXb3JsZCBHZW9kZXRpYyBTeXN0ZW0gb2YgMTk4NF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV29ybGRfR2VvZGV0aWNfU3lzdGVtKSBpcyB0aGUgZGVmYXVsdCBnZW9ncmFwaGljIENSUyB1c2VkIHRvZGF5LgoKYFdHUzg0YCBpcyB0aGUgZGVmYXVsdCBDUlMgZm9yIG1vc3QgR0lTIHNvZnR3YXJlCgpBbG1vc3QgYWxsIGRhdGEgd2l0aCBsb24vbGF0IGNvb3JkaW5hdGVzIGFyZSBhc3N1bWVkIHRvIGJlIFdHUzg0IHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkCgpbTkFEODNdIGlzIGFub3RoZXIgY29tbW9uIGdlb2dyYXBoaWMgQ1JTIHVzZWQgYnkgVVMgYWdlbmNpZXMgbGlrZSB0aGUgQ2Vuc3VzLgoKYFdHUzg0YCBhbmQgYE5BRDgzYCBhcmUgc28gc2ltaWxhciB0aGF0IGRpZmZlcmVuY2VzIGFyZSBvZnRlbiBpZ25vcmVkIGV4Y2VwdCBmb3IgYXBwbGljYXRpb25zIHJlcXVpcmluZyBoaWdoIGxvY2F0aW9uYWwgYWNjdXJhY3kuCgoKIyMgTWFwIFByb2plY3Rpb25zCgpBIGBQcm9qZWN0ZWQgQ1JTYCBhcHBsaWVzIGEgKiptYXAgcHJvamVjdGlvbioqIHRvIGEgR2VvZ3JhcGhpYyBDUlMKCmBNYXAgUHJvamVjdGlvbmA6IG1hdGhlbWF0aWFsIHRyYW5zZm9ybWF0aW9uIGZyb20gY3VydmVkIHRvIGZsYXQgc3VyZmFjZQoKPGltZyB3aWR0aD0iNjAwcHgiIHNyYz0iaW1hZ2VzL3Byb2plY3Rpb24uZ2lmIj48L2ltZz4KCgojIyBQcm9qZWN0ZWQgQ1JTcwoKVGhlcmUgYXJlIG1hbnksIG1hbnksIG1hbnkgcHJvamVjdGVkIENSU3MKCkFsbCBpbnRyb2R1Y2UgZGlzdG9ydGlvbiwgZWcgaW4gc2hhcGUsIGFyZWEsIGRpc3RhbmNlLCBkaXJlY3Rpb24KCk5vIGJlc3Qgb25lIGZvciBhbGwgcHVycG9zZXMKClNlbGVjdGlvbiBkZXBlbmRzIG9uIGxvY2F0aW9uLCBleHRlbnQgYW5kIHB1cnBvc2UKCiMjICBEaWZmZXJlbnQgUHJvamVjdGVkIENSU3MKCjxpbWcgaGVpZ2h0PSI1MDBweCIgc3JjPSJpbWFnZXMvZGlmZl9jcnMucG5nIj48L2ltZz4KCgojIyBTcGF0aWFsIERhdGEKClNwYXRpYWwgZGF0YSBpcyBhIG1vcmUgZ2VuZXJpYyB0ZXJtIHRoYXQgaXMgbm90IGp1c3QgZm9yIGdlb2dyYXBoaWMgZGF0YS4gCgojIyBTcGF0aWFsIGRhdGEgYXJlIHBvd2VyZnVsIGJlY2F1c2UKCi0gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIHNwYXRpYWwgbWV0cmljcyBsaWtlIGFyZWEgYW5kIGxlbmd0aCwgCi0gY2hhcmFjdGVyaXN0aWNzIGxpa2UgZGlzdGFuY2UgYW5kIGRpcmVjdGlvbiwgYW5kIAotIHJlbGF0aW9uc2hpcHMgbGlrZSBpbnNpZGUgYW5kIGludGVyc2VjdHMgZnJvbSB0aGVzZSBkYXRhLgoKIyBUeXBlcyBvZiBTcGF0aWFsIERhdGEKCgojIyBWZWN0b3IgRGF0YQoKUG9pbnRzLCBsaW5lcyBhbmQgUG9seWdvbnMKCjxpbWcgd2lkdGg9IjgwMHB4IiBzcmM9ImltYWdlcy92ZWN0b3JfZGF0YS5wbmciPjwvaW1nPgoKIyMgUmFzdGVyIERhdGEKClJlZ3VsYXIgZ3JpZCBvZiBjZWxscyAob3IgcGl4ZWxzKQoKPGltZyB3aWR0aD0iODAwcHgiIHNyYz0iaW1hZ2VzL3Jhc3Rlcl9kYXRhLnBuZyI+PC9pbWc+CgoqIFdlIHdvbid0IGJlIGNvdmVyaW5nIFJhc3RlciBkYXRhIGluIHRoaXMgd29ya3Nob3AqCgojIyBTb2Z0YXJlIGZvciB3b3JraW5nIHdpdGggR2Vvc3BhdGlhbCBEYXRhCgotIFdoeSBzcGVjaWFsIHNvZnR3YXJlPwoKIyMgU29mdHdhcmUgZm9yIHdvcmtpbmcgd2l0aCBHZW9zcGF0aWFsIERhdGEKCk1vc3Qgc29mdHdhcmUgY2FuIG9ubHkgcXVlcnkgYW5kIGFuYWx5emUgbnVtYmVycyBhbmQgdGV4dAoKLSBEYXRhYmFzZXMsIHNwcmVhZHNoZWV0cywgc3RhdGlzdGljYWwgc29mdHdhcmUgcGFja2FnZXMKCiMjIEdJUyAtIEdlb2dyYXBoaWMgSW5mb3JtYXRpb24gU3lzdGVtcwoKU29mdHdhcmUgdGhhdCBjYW4gaW1wb3J0LCBjcmVhdGUsIHN0b3JlLCBlZGl0LCB2aXN1YWxpemUgYW5kIGFuYWx5emUgZ2Vvc3BhdGlhbCBkYXRhCgotIGRhdGEgdHlwZXMvb2JqZWN0cyB0byByZXByZXNlbnQgZ2Vvc3BhdGlhbCBkYXRhCiAgICAtIGxvY2F0aW9ucyByZXByZXNlbnRlZCB3aXRoIGNvb3JkaW5hdGVzIAogICAgLSBhbmQgcmVmZXJlbmNlZCB0byB0aGUgc3VyZmFjZSBvZiB0aGUgZWFydGggdmlhIENSU3MKICAgIAotIG1ldGhvZHMgdG8gb3BlcmF0ZSBvbiB0aG9zZSByZXByZXNlbnRhdGlvbnMKCgojIyBUeXBlcyBvZiBHSVMKCkRlc2t0b3AgR0lTIC0gQXJjR0lTLCBRR0lTCgpTb2Z0d2FyZSBleHRlbmRlZCB0byBzdXBwb3J0IGdlb3NwYXRpYWwgZGF0YSAtIFRhYmxlYXUsIFIKClNwYXRpYWwgRGF0YWJhc2VzIC0gUG9zdGdyZXNxbAoKV2ViIEdJUyAtIEFyY0dJUyBPbmxpbmUsIENBUlRPCgpDdXN0b20gc29mdHdhcmUgLSBsZWFmbGV0IHdlYiBtYXBzCgojIFdoeSBSIGZvciBHZW9zcGF0aWFsIERhdGE/CgojIyBXaHkgUiBmb3IgR2Vvc3BhdGlhbCBEYXRhPwoKWW91IGFscmVhZHkgdXNlIFIKClJlcHJvZHVjaWJpbGl0eSAKCkZyZWUgJiBPcGVuIFNvdXJjZQoKQ3V0dGluZyBlZGdlIAoKVGhvdXNhbmRzIG9mIENvb2wgYWRkLW9ucwoKLSBTaGlueSwgcmxlYWZsZXQKCgojIEdlb3NwYXRpYWwgRGF0YSBGaWxlIGZvcm1hdHMKCiMjIENvbW1vbiBGaWxlIEZvcm1hdHMKClZlY3RvciBwb2ludHMsIGxpbmVzICYgcG9seWdvbnM6CgoqIENTVgoqIFtFU1JJIFNoYXBlZmlsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2hhcGVmaWxlKQoqIEdlb0pTT04KKiBLTUwKClJhc3RlciBncmlkcwoKKiBUSUZGLCBHZW9UaWZmCiogSlBFRywgSlBFRzIwMDAKKiBBU0NJSSBHcmlkCgpTZWUgW0dJUyBmaWxlIGZvcm1hdHNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dJU19maWxlX2Zvcm1hdHMpCgojIyBFU1JJIFNoYXBlZmlsZQoKVGhpcyBpcyBvbmUgb2YgdGhlIG1vc3QsIGlmIG5vdCB0aGUgbW9zdCBjb21tb24gc3BhdGlhbCB2ZWN0b3IgZGF0YSBmaWxlIGZvcm1hdHMuCgo8aW1nIHNyYz0iaW1hZ2VzL3NoYXBlZmlsZS5wbmciPjwvaW1nPgoKT2xkIGJ1dCBldmVyeXdoZXJlIQoKR290Y2hhczogMkdCIGxpbWl0LCAxMCBjaGFyIGNvbHVtbiBuYW1lcywgcG9vciB1bmljb2RlIHN1cHBvcnQKCgojIyBDU1YgKENvbW1hIFNlcGFyYXRlZCBWYWx1ZXMpIEZpbGVzCgpUaGUgc2ltcGxlc3QsIG1vc3QgY29tbW9uIGZvcm1hdCBmb3IgcG9pbnQgZGF0YQoKPHByZT4KIklEIiwibmFtZeKAnSzigJ144oCdLOKAnXnigJ0s4oCddGFzdGUiLCJwcmljZSIsImNyb3dkZWQiLCJmb29kIgoiMSIsImJhYmV0dGUiLC0xMjIuMjU1Mzc0LDM3Ljg2ODQyOCwxMCw0LDEsMQoiMiIsIm11c2ljYWwiLC0xMjIuMjYwNjk4LDM3Ljg2ODM4Myw3LDMuMjUsMSwxCiIzIiwic3RhcmJ1Y2tzIiwtMTIyLjI2NjA1NywzNy44NzA0NDEsNiwyLjk1LDEsMAoiNCIsInlhbGlzIiwtMTIyLjI2NjM4NSwzNy44NzM1MjgsNywyLjk1LDAsMAoiNSIsImJlcmtlbGV5ZXNwIiwtMTIyLjI2ODY4MSwzNy44NzM2NjQsMywzLjI1LDEsMAoiNiIsImZlcnRpbGUiLC0xMjIuMjY4ODYzLDM3Ljg3NDkzNCw1LDMuMjUsMCwxCjwvcHJlPgoKIyBHZW9zcGF0aWFsIERhdGEgaW4gUgoKIyMgR2Vvc3BhdGlhbCBEYXRhIGluIFIKClRoZXJlIGFyZSBtYW55IGFwcHJvYWNoZXMgdG8gYW5kIHBhY2thZ2VzIGZvciB3b3JraW5nIHdpdGggZ2Vvc3BhdGlhbCBkYXRhIGluIFIuCgpPbmUgYXBwcm9hY2ggaXMgdG8ga2VlcCBpdCBzaW1wbGUgYW5kIHN0b3JlIGdlb3NwYXRpYWwgZGF0YSBpbiBhIGRhdGEgZnJhbWUuCgpUaGlzIGFwcHJvYWNoIGlzIG1vc3QgY29tbW9uIHdoZW4gdGhlIGRhdGEgYXJlIHBvaW50IGRhdGEgaW4gQ1NWIGZpbGVzLgoKIyMgQWJvdXQgdGhlIFNhbXBsZSBEYXRhCgoqKlNhbiBGcmFuY2lzY28gT3BlbiBEYXRhIFBvcnRhbCoqCltodHRwczovL2RhdGEuc2Znb3Yub3JnXShodHRwczovL2RhdGEuc2Znb3Yub3JnKQoKW1NGIFByb3BlcnR5IFRheCBSb2xsc10oaHR0cHM6Ly9kYXRhLnNmZ292Lm9yZy9Ib3VzaW5nLWFuZC1CdWlsZGluZ3MvQXNzZXNzb3ItSGlzdG9yaWNhbC1TZWN1cmVkLVByb3BlcnR5LVRheC1Sb2xscy93djVtLXZwcTIpCgpUaGlzIGRhdGEgc2V0IGluY2x1ZGVzIHRoZSBPZmZpY2Ugb2YgdGhlIEFzc2Vzc29yLVJlY29yZGVy4oCZcyBzZWN1cmVkIHByb3BlcnR5IHRheCByb2xsIHNwYW5uaW5nIGZyb20gMjAwNyB0byAyMDE2LgoKV2UgYXJlIHVzaW5nIHRoaXMgYXMgYSBwcm94eSBmb3IgaG9tZSB2YWx1ZXMuCgojIyBMb2FkIHRoZSBDU1YgZmlsZSBpbnRvIGEgZGF0YSBmcmFtZQpgYGB7ciwgZWNobz1GIH0Kc2Zob21lcyA8LSByZWFkLmNzdignZGF0YS9zZl9wcm9wZXJ0aWVzXzI1a3NhbXBsZS5jc3YnKQpgYGAKCmBgYHtyLCBldmFsPUYgfQpzZmhvbWVzIDwtIHJlYWQuY3N2KCdkYXRhL3NmX3Byb3BlcnRpZXNfMjVrc2FtcGxlLmNzdicpICAKaGVhZChzZmhvbWVzLDYpCgpgYGAKCiMjIEV4cGxvcmUgdGhlIGRhdGEKCmBgYHtyLCBldmFsPUZ9CmNsYXNzKHNmaG9tZXMpICMgd2hhdCB0eXBlIG9mIGRhdGEgb2JqZWN0PwpkaW0oc2Zob21lcykgIyBob3cgbWFueSByb3dzIGFuZCBjb2x1bW5zCnN0cihzZmhvbWVzKSAjIGRpc3BsYXkgdGhlIHN0cnVjdHVyZSBvZiB0aGUgb2JqZWN0CmhlYWQoc2Zob21lcykgIyB0YWtlIGEgbG9vayBhdCB0aGUgZmlyc3QgMTAgcmVjb3JkcwpzdW1tYXJ5KHNmaG9tZXMpICMgZXhwbG9yZSB0aGUgcmFuZ2Ugb2YgdmFsdWVzCmhpc3Qoc2Zob21lcyR0b3R2YWx1ZSkgICMgcGxvdCBoZSByYW5nZSBvZiB2YWx1ZXMgZm9yIHRoZSB0b3R2YWx1ZSBjb2x1bW4KYGBgCgojIyBQbG90IG9mIHBvaW50cwoKYGBge3J9CnBsb3Qoc2Zob21lcyRsb24sIHNmaG9tZXMkbGF0KSAjIHVzaW5nIGJhc2UgcGxvdCBmdW5jdGlvbgpgYGAKCiMjIE5pY2UgTWFwcyB3aXRoIGBnZ3Bsb3QyYAoKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKCmdncGxvdCgpICsgZ2VvbV9wb2ludChkYXRhPXNmaG9tZXMsIGFlcyhsb24sbGF0KSwgY29sPSJyZWQiLCBzaXplPTEpCmBgYAogCgoKIyMgQ29sb3IgcG9pbnRzIGJ5IGB0b3R2YWx1ZWAKYGBge3J9CmdncGxvdCgpICsgZ2VvbV9wb2ludChkYXRhPXNmaG9tZXMsIGFlcyhsb24sbGF0LCBjb2w9dG90dmFsdWUpKQpgYGAKCgojIyBTdWJzZXQgdGhlIERhdGEKCmZvciBgU2FsZXNZZWFyYCBlcXVhbCB0byAyMDE1CgpgYGB7cn0Kc2Zob21lczE1IDwtIHN1YnNldChzZmhvbWVzLCBhcy5udW1lcmljKFNhbGVzWWVhcikgPT0gMjAxNSkKCm5yb3coc2Zob21lczE1KSAjIEhvdyBtYW55IHJlY29yZHM/CgpgYGAKCiMjIEFsd2F5cyBFeHBsb3JlCmBgYHtyfQpoaXN0KHNmaG9tZXMxNSR0b3R2YWx1ZSkgIyBXaGF0IGlzIHRoZSBkaXN0cmlidXRpb24gb2YgdG90dmFsdWU/CmBgYAoKIyMgQ2hhbGxlbmdlIC0gTWFrZSBhIG1hcAoKb2YgYHNmaG9tZXMxNWAgdXNpbmcgYGdncGxvdGAgYW5kIHNldCB0aGUgY29sb3IgdG8gdGhlIGB0b3R2YWx1ZWAgY29sdW1uLgoKIyMgCmBgYHtyfQpnZ3Bsb3QoKSArIGdlb21fcG9pbnQoZGF0YT1zZmhvbWVzMTUsIGFlcyh4PWxvbiwgeT1sYXQsIGNvbD10b3R2YWx1ZSkpCmBgYAoKCiMjIGBnZ21hcGAgZXh0ZW5kcyBgZ2dwbG90YAoKQ3JlYXRlIGJhc2VtYXBzIG9uIHdoaWNoIHlvdSBjYW4gZGlzcGxheSB5b3VyIGRhdGEuCgpHZW9jb2RlIHBsYWNlIG5hbWVzIGFuZCBhZGRyZXNzZXMgdG8gZ2V0IHBvaW50IGNvb3JkaW5hdGVzLgoKYW5kIG1vcmUuLi4KCiMjIGdnbWFwCgpMb2FkIHRoZSBsaWJhcnkKYGBge3J9CmxpYnJhcnkoZ2dtYXApCmBgYAoKIyMgZ2dtYXAKClNvbWUgZnVuY3Rpb25hbGl0eSBtYXkgcmVxdWlyZSB5b3UgdG8gcmVnaXN0ZXIgYSBHb29nbGUgQVBJIGtleQpTZWUgdGhpcyBbU3RhY2tPdmVyZmxvdyBkaXNjdXNzaW9uXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDQwMjk3OS9pbmNyZWFzZS10aGUtYXBpLWxpbWl0LWluLWdnbWFwcy1nZW9jb2RlLWZ1bmN0aW9uLWluLXIpCgpgYGB7cn0KI2RldnRvb2xzOjppbnN0YWxsX2dpdGh1YigiZGthaGxlL2dnbWFwIikKI2xpYnJhcnkoZ2dtYXApCiNyZWdpc3Rlcl9nb29nbGUoa2V5PSJYWFhYWCIpICMgeW91ciBrZXkgaGVyZQpgYGAKYGBge3IsIGVjaG89RkFMU0V9CiNkZXZ0b29sczo6aW5zdGFsbF9naXRodWIoImRrYWhsZS9nZ21hcCIpCiNsaWJyYXJ5KGdnbWFwKQojcmVnaXN0ZXJfZ29vZ2xlKGtleT0iQUl6WFhYWFhYWFhYWFhYWFhYWFhYWFhYeFBTRSIpICMgeW91ciBrZXkgaGVyZQpyZWdpc3Rlcl9nb29nbGUoa2V5PSJBSXphU3lESHNZTlptcW1UTnZGbjM2dHE0NzBpUnlYZ1FFVS1QU0UiKQpgYGAKCiMjICBnZXRfbWFwCgpGZXRjaCBtYXAgZGF0YSAoZGVmYXVsdD1Hb29nbGUpIHRvIHBsb3QgdXNpbmcgYGdldF9tYXBgCgpVc2UgYD9nZXRfbWFwYCBmb3IgZGV0YWlscwpgYGB7cn0Kc2ZfbWFwIDwtIGdldF9tYXAoIlNhbiBGcmFuY2lzY28sIENBIikgIApgYGAKClRoaXMgdXNlIG9mIHRoZSBjb21tYW5kIGxldmVyYWdlcyB0aGUgR29vZ2xlIEdlb2NvZGluZyBBUEkuCgoKIyMgRGlzcGxheSB0aGUgZ2dtYXAgb2YgU0YKCmBgYHtyfQpnZ21hcChzZl9tYXApCmBgYAoKIyMgU3ludGF4IHNpbWlsYXIgdG8gYGdncGxvdGAKCmBgYHtyfQpnZ21hcChzZl9tYXApICsKICBnZW9tX3BvaW50KGRhdGE9c2Zob21lczE1LCBhZXMoeD1sb24sIHk9bGF0LCBjb2w9dG90dmFsdWUpKQoKYGBgCgojIyBDdXN0b21pemUgYGdldF9tYXBgCgpDcmVhdGUgYSBiYXNlbWFwIHpvb21lZCB0byB0aGUgZXh0ZW50IG9mIG91ciBkYXRhCmBgYHtyfQoKIyBHZXQgdGhlIGNlbnRlciBwb2ludCBvZiB0aGUgZGF0YQpzZl9jdHIgPC0gYyhsb24gPSBtZWFuKHNmaG9tZXMxNSRsb24pLCBsYXQgPSBtZWFuKHNmaG9tZXMxNSRsYXQpKQpzZl9jdHIgICMgdGFrZSBhIGxvb2sKCiMgY3JlYXRlIHRoZSBtYXAKc2ZfYmFzZW1hcCA8LSBnZXRfbWFwKHNmX2N0ciwgem9vbT0xMiwgc2NhbGU9MSkKYGBgCgojIyBQbG90IHRoZSBiYXNlbWFwIHdpdGggdGhlIGRhdGEgb3ZlcmxheQpgYGB7cn0KZ2dtYXAoc2ZfYmFzZW1hcCkgKwogIGdlb21fcG9pbnQoZGF0YT1zZmhvbWVzMTUsIGFlcyh4PWxvbiwgeT1sYXQsIGNvbD10b3R2YWx1ZSkpCmBgYAoKIyMgQ2hhbmdlIHRoZSBiYXNlbWFwCgpTZWUgYD9nZXRfbWFwYCB0byBnZXQgYXZhaWxhYmxlIG9wdGlvbnMKYGBge3J9CnNmX2Jhc2VtYXBfbGl0ZSA8LSBnZXRfbWFwKHNmX2N0ciwgem9vbT0xMiwgc2NhbGU9MSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXB0eXBlID0gInRvbmVyLWxpdGUiLCBzb3VyY2U9InN0YW1lbiIpCmBgYAoKIyMgQ2hhbmdlIHRoZSBiYXNlbWFwCgpgYGB7cn0KZ2dtYXAoc2ZfYmFzZW1hcF9saXRlKSArCiAgZ2VvbV9wb2ludChkYXRhPXNmaG9tZXMxNSwgYWVzKHg9bG9uLCB5PWxhdCwgY29sPXRvdHZhbHVlKSkKCmBgYAoKCiMjIEZhY2V0cyAvIFNtYWxsIE11bHRpcGxlcyAvIE1pY3JvIE1hcHMKYGBge3IsIGV2YWw9Rn0KIyBMZXQncyBsb29rIGF0IGxhc3QgNSB5ZWFycwpzZmhvbWVzMjAxMF8xNSA8LSBzdWJzZXQoc2Zob21lcywgYXMubnVtZXJpYyhTYWxlc1llYXIpID4gMjAwOSkKCmdnbWFwKHNmX2Jhc2VtYXBfbGl0ZSkgKwogIGdlb21fcG9pbnQoYWVzKGxvbiwgbGF0LCBjb2w9dG90dmFsdWUpLCBkYXRhID0gc2Zob21lczIwMTBfMTUgKSAgKwogIGZhY2V0X3dyYXAofiBTYWxlc1llYXIpCgpgYGAKCmBgYHtyLCBlY2hvPUZ9CiMgRE8gRE9OVCBTSE9XCiMgTGV0J3MgbG9vayBhdCBsYXN0IDUgeWVhcnMKc2Zob21lczIwMTBfMTUgPC0gc3Vic2V0KHNmaG9tZXMsIGFzLm51bWVyaWMoU2FsZXNZZWFyKSA+IDIwMDUpCmBgYAoKIyMgRmFjZXQvIFNtYWxsIE11bHRpcGxlcyAvIE1pY3JvIE1hcHMKYGBge3J9CmdnbWFwKHNmX2Jhc2VtYXBfbGl0ZSkgKwogIGdlb21fcG9pbnQoYWVzKGxvbiwgbGF0LCBjb2w9dG90dmFsdWUpLCBkYXRhID0gc2Zob21lczIwMTBfMTUgKSAgKwogIGZhY2V0X3dyYXAofiBTYWxlc1llYXIpCgpgYGAKCiMjIENoYWxsZW5nZQoKUmVkbyBhYm92ZSBmYWNldCBtYXAgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6CgotIFVzZSBkYXRhIGZyb20gMTk5NSAtIDE5OTkKLSBVc2UgYSBkaWZmZXJlbnQgYmFzZW1hcCAoZWcgbWFwdHlwZT0idGVycmFpbiIpCgojIyBDaGFsbGVuZ2UKYGBge3J9CnNmaG9tZXMxOTk1XzE5OTkgPC0gc3Vic2V0KHNmaG9tZXMsIChhcy5udW1lcmljKFNhbGVzWWVhcikgPj0gMTk5NSkgJiAoYXMubnVtZXJpYyhTYWxlc1llYXIpIDw9IDE5OTkpKQoKZ2dtYXAoc2ZfYmFzZW1hcF9saXRlKSArCiAgZ2VvbV9wb2ludChhZXMobG9uLCBsYXQsIGNvbD10b3R2YWx1ZSksIGRhdGEgPSBzZmhvbWVzMTk5NV8xOTk5ICkgICsKICBmYWNldF93cmFwKH4gU2FsZXNZZWFyKQpgYGAKCiMgR0dNYXAgYW5kIEdHUGxvdCBhcmUgZ3JlYXQhCgojIyBCVVQhCgpUaGVyZSBhcmUgbGltaXRzIHRvIHdoYXQgeW91IGNhbiBkbyB3aXRoIGdlb3NwYXRpYWwgZGF0YSBzdG9yZWQgaW4gYSBkYXRhZnJhbWUKCmFuZCBtYXBwaW5nIHRoZSBkYXRhIHdpdGggYGdncGxvdGAgYW5kIGBnZ21hcGAKCiMjIENhbid0IHJlYWQgJiBwbG90IGdlb3NwYXRpYWwgZGF0YSBmaWxlcwoKU2hhcGVmaWxlIGlzIHRoZSBtb3N0IGNvbW1vbiBmb3JtYXQgZm9yIG5vbi1wb2ludCBnZW9zcGF0aWFsIGRhdGEuCgpDYW4ndCBkaXJlY3RseSByZWFkIG9yIHBsb3QgYSBzaGFwZWZpbGUgd2l0aCBkYXRhIGZyYW1lcy9nZ3Bsb3QvZ2dtYXAKCjxpbWcgc3JjPSJpbWFnZXMvc2hhcGVmaWxlLnBuZyIgd2lkdGg9IjQwMHB4Ij48L2ltZz4KCiMjIENhbid0IHRyYW5zZm9ybSBDb29yZGluYXRlIERhdGEKCjxpbWcgc3JjPSJpbWFnZXMvYmFydF9zZl9kZi5wbmciIHdpZHRoPSI2MDBweCI+PGltZz4KCgojIyBTcGF0aWFsIEFuYWx5c2lzCgotIFdoYXQgcHJvcGVydGllcyBhcmUgd2l0aGluIHdhbGtpbmcgZGlzdGFuY2UgKC4yNSBtaWxlcykgb2YgYSBCQVJUIHN0YXRpb24/CgotIEF2ZXJhZ2Ugc2FsZXMgcHJpY2UgYnkgY2Vuc3VzIHRyYWN0PwoKTW9zdCBzcGF0aWFsIG9wZXJhdGlvbnMgcmVxdWlyZSBzcGF0aWFsIG9iamVjdHMgYW5kIG1ldGhvZHMKCgojIFNwYXRpYWwgRGF0YSBPYmplY3RzIGluIFIKCgojIHNwIFBhY2thZ2UKCiMjIFRoZSBgc3BgIFBhY2thZ2UKCioqQ2xhc3NlcyBhbmQgTWV0aG9kcyBmb3IgU3BhdGlhbCBEYXRhKioKClRoZSBgU1BgIHBhY2thZ2UgaXMgbW9zdCBjb21tb25seSB1c2VkIHRvIGNvbnN0cnVjdCBhbmQgbWFuaXB1bGF0ZSBzcGF0aWFsIGRhdGEgb2JqZWN0cyBpbiBSLiAKCioqSHVuZHJlZHMqKiBvZiBvdGhlciBSIHBhY2thZ2VzIHRoYXQgZG8gdGhpbmdzIHdpdGggc3BhdGlhbCBkYXRhIHR5cGljYWxseSBidWlsZCBvbiBTUCBvYmplY3RzLgoKCiMgc3AgcGFja2FnZQoKIyMgYHNwYCBwYWNrYWdlCgpUYWtlIGEgbG9vayBhdCB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIHNwYXRpYWwgb2JqZWN0IGNsYXNzZXMgc3VwcG9ydGVkIGJ5IGBzcGAKCmBgYHtyfQpsaWJyYXJ5KHNwKQpnZXRDbGFzcygiU3BhdGlhbCIpIApgYGAKCmBgYAoKIyMgc3AgVmVjdG9yIE9iamVjdHMKIEdlb21ldHJ5IHwgU3BhdGlhbCBPYmplY3QgfCBTcGF0aWFsIE9iamVjdCB3aXRoIEF0dHJpYnV0ZXMgCiAtLS0tLS0tLS18IC0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogUG9pbnRzIHwgU3BhdGlhbFBvaW50cyB8IFNwYXRpYWxQb2ludHNEYXRhRnJhbWUgCiBMaW5lcyB8IFNwYXRpYWxMaW5lcyB8IFNwYXRpYWxMaW5lc0RhdGFGcmFtZSAKIFBvbHlnb25zIHwgU3BhdGlhbFBvbHlnb25zIHwgU3BhdGlhbFBvbHlnb25zRGF0YUZyYW1lCiAKPHByZT4KCjwvcHJlPgoKV2UgdXNlIHRoZSBTKkRGIG9iamVjdHMgbW9zdCBmcmVxdWVudGx5IQoKCiMgRnJvbSBEYXRhIEZyYW1lIHRvIFNwYXRpYWxQb2ludHNEYXRhRnJhbWUKCiMjIEZyb20gRGF0YSBGcmFtZSB0byBTcGF0aWFsUG9pbnRzRGF0YUZyYW1lCgpMZXQncyB0cmFuc2Zvcm0gdGhlIGBzZmhvbWVzMTVgIGRhdGEgZnJhbWUgdG8gYW4gYHNwYCBvYmplY3Qgb2YgdHlwZSBgU3BhdGlhbFBvaW50c0RhdGFGcmFtZWAKCgojIyBgc3A6OmNvb3JkaW5hdGVzKClgIAoKVXNlIHRoZSBgc3A6OmNvb3JkaW5hdGVzKClgIG1ldGhvZAotIFNldHMgb3IgcmV0cmlldmVzIHNwYXRpYWwgY29vcmRpbmF0ZXMKCldoZW4gdHJhbnNmb3JtaW5nIGEgREYgdG8gU1BERiwgcmVxdWlyZXMgCi0gdGhlIG9iamVjdCB0aGF0IHdpbGwgZ2V0IHRoZSBjb29yZGluYXRlcwotIHRoZSBuYW1lcyBvZiB0aGUgY29sdW1ucyB0aGF0IGNvbnRhaW4gdGhlIFggYW5kIFkgY29vcmRpbmF0ZXMKCgojIyBEYXRhIEZyYW1lIHRvIFNQREYKCmBgYHtyfQoKIyBGaXJzdCBtYWtlIGEgY29weSBvZiB0aGUgZGF0YSBmcmFtZQpzZmhvbWVzMTVfc3AgPC0gc2Zob21lczE1Cgpjb29yZGluYXRlcyhzZmhvbWVzMTVfc3ApIDwtIGMoJ2xvbicsJ2xhdCcpICMgT1JERVIgTUFUVEVSUyEhCgpjbGFzcyhzZmhvbWVzMTVfc3ApICMgY2hlY2sgaXQKYGBgCgojIyBzcDo6Y29vcmRpbmF0ZXMoKQoKWW91IHRyYW5zZm9ybWVkIGEgZGF0YSBmcmFtZSB0byBhbiBTUERGIHVzaW5nOgpgYGAKY29vcmRpbmF0ZXMoc2Zob21lczE1X3NwKSA8LSBjKCdsb24nLCdsYXQnKQpgYGAKCk5vdyB0cnkgdGhpczoKYGBgCmNvb3JkaW5hdGVzKHNmaG9tZXMxNV9zcCkKYGBgCgojIyBDb21wYXJlIHRoZSBTUERGIHRvIERGCmBgYHtyfQpzdHIoc2Zob21lczE1KSAjIHRoZSBkYXRhIGZyYW1lCmBgYAoKIyMgU1BERgpgYGB7cn0Kc3RyKHNmaG9tZXMxNV9zcCkgIyB0aGUgU1BERgpgYGAKIAoKIyBTUERGIE9iamVjdHMKCiMjIFNQREYgT2JqZWN0cwoKWW91IGNhbiBzZWUgZnJvbSAqKnN0cihzZmhvbWVzKSoqIHRoYXQgYSBTUERGIG9iamVjdCBpcyBhIGNvbGxlY3Rpb24gb2Ygc2xvdHMgb3IgY29tcG9uZW50cy4gVGhlIGtleSBvbmVzIGFyZToKCi0gYEBkYXRhYCBkYXRhIGZyYW1lIG9mIGF0dHJpYnV0ZXMgdGhhdCBkZXNjcmliZSBlYWNoIGxvY2F0aW9uCi0gYEBjb29yZHNgIHRoZSBjb29yZGluYXRlcyBmb3IgZWFjaCBnZW9tZXRyaWMgb2JqZWN0IC0gaGVyZSBwb2ludHMgCi0gYEBiYm94YCB0aGUgbWluIGFuZCBtYXggYm91bmRpbmcgY29vcmRpbmF0ZXMKLSBgQHByb2o0c3RyaW5nYCB0aGUgY29vcmRpbmF0ZSByZWZlcmVuY2Ugc3lzdGVtIGRlZmludGlvbiBhcyBhIHN0cmluZwoKKkV4cGxvcmUgdGhlIG9iamVjdCBpbiB0aGUgRW52aXJvbm1lbnQgd2luZG93KgoKIyMgU1BERiBTbG90cwogClJldmlldyB0aGUgb3V0cHV0IG9mIGVhY2ggb2YgdGhlc2U6CgpgYGB7ciwgZXZhbD1GfQoKc3VtbWFyeShzZmhvbWVzMTVfc3ApCmhlYWQoc2Zob21lczE1X3NwQGRhdGEpCmNsYXNzKHNmaG9tZXMxNV9zcEBkYXRhKQoKc2Zob21lczE1X3NwQGJib3gKYmJveChzZmhvbWVzMTVfc3ApCgpoZWFkKHNmaG9tZXMxNV9zcEBjb29yZHMpCmhlYWQoc2Zob21lczE1X3NwJGxhdCkKaGVhZChzZmhvbWVzMTVfc3AkbG9uKQoKc2Zob21lczE1X3NwQHByb2o0c3RyaW5nCnByb2o0c3RyaW5nKHNmaG9tZXMxNV9zcCkKCmBgYAoKIyMgVGFrZSBhIGNsb3NlciBsb29rCgpMb29rIGF0IGBzZmhvbWVzMTVfc3BgIGluIHRoZSBlbnZpcm9ubWVudCB3aW5kb3cKCgojIyBXaGF0J3MgbWlzc2luZwoKQXJlIGFsbCB0aGUgY29sdW1ucyB0aGF0IHdlcmUgcHJlc2VudCBpbiBgc2Zob21lczE1YCBhbHNvIGluIGBzZmhvbWVzMTVfc3BgPwoKSXMgdGhlcmUgYSBzbG90IGluIGBzZmhvbWVzMTVfc3BgIHdpdGhvdXQgZGF0YT8KCgojIyBXaGF0IGlzIHRoZSBDUlMgb2YgdGhlIGRhdGE/CmBgYHtyfQoKcHJvajRzdHJpbmcoc2Zob21lczE1X3NwKSAjIGdldCBhIENSUyBvYmplY3QKCmBgYAoKIyMgTWFwIGFuIGBTcGF0aWFsUG9pbnRzRGF0YUZyYW1lYApgYGB7cn0KcGxvdChzZmhvbWVzMTVfc3ApICAjIHVzaW5nIHNwOjpwbG90CmBgYAoKIyBTby4uLi4uPwoKIyMgUmVjYXAKCldlIGNyZWF0ZWQgZ3JlYXQgbWFwcyBvZiBzZmhvbWVzIHBvaW50IGRhdGEgd2l0aCBgZ2dwbG90YCBhbmQgYGdnbWFwYC4KClRoZW4gd2UgY3JlYXRlZCBhIHNpbXBsZSBtYXAgb2YgdGhlIGBTUERGYCB3aXRoIGBwbG90YC4KCldlIGFyZW4ndCBzZWVpbmcgdGhlIHZhbHVlIG9mIGBzcGAgb2JqZWN0cyBqdXN0IHlldC4KCiMgTGV0J3MgYWRkIG1vcmUgZ2Vvc3BhdGlhbCBkYXRhCgojIyBSZWFkaW5nIGluIEdlb3NwYXRpYWwgRGF0YQoKVGhlcmUncyBhbiBSIHBhY2thZ2UgZm9yIHRoYXQhIAoKIyMgYHJnZGFsYAoKYHJnZGFsYCBpcyBhbiBSIHBvcnQgb2YgdGhlIHBvd2VyZnVsIGFuZCB3aWRlbHkgdXNlZCBbR0RBTF0oaHR0cDovL2dkYWwub3JnKSBsaWJyYXJ5LgoKSXQgaXMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBSIGxpYnJhcnkgZm9yIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIHNwYXRpYWwgZGF0YS4gCgoqIGBPR1JgOiBmb3IgdmVjdG9yIGRhdGE6IHJlYWRPR1IoKSBhbmQgd3JpdGVPR1IoKQoKKiBgR0RBTGAgZm9yIHJhc3RlciBkYXRhOiByZWFkR0RBTCgpIGFuZCB3cml0ZUdEQUwoKQoKIyMgYHJnZGFsYAoKYGBge3J9CgpsaWJyYXJ5KHJnZGFsKQoKIyBTZWUgd2hhdCBmaWxlIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYnkgcmdkYWwgZHJpdmVycwojIG9nckRyaXZlcnMoKSRuYW1lCgpgYGAKCiMjIEdldHRpbmcgaGVscAoKZ2RhbC5vcmcKCmA/cmVhZE9HUgoKRm9yIG1vcmUgaW5mbyBvbiB3b3JraW5nIHdpdGggYHJnZGFsYCB0byBsb2FkIGRpZmZlcmVudCB0eXBlcyBvZiBzcGF0aWFsIGRhdGEgaW4gUiBzZWUgdGhpcyBleGNlbGxlbnQgW3R1dG9yaWFsXShodHRwOi8vemV2cm9zcy5jb20vYmxvZy8yMDE2LzAxLzEzL3RpcHMtZm9yLXJlYWRpbmctc3BhdGlhbC1maWxlcy1pbnRvLXItd2l0aC1yZ2RhbC8pIGJ5IFpldiBSb3NzLgoKIyMgUmVhZCBpbiBhIFNoYXBlZmlsZSB3aXRoIHRoZSBib3VuZGFyeSBvZiBTYW4gRnJhbmNpc2NvCgpUYWtlIGEgbG9vayBhdCB0aGUgZmlsZShzKQpgYGB7cn0KCmRpcigiZGF0YSIsIHBhdHRlcm49InNmX2JvdW5kYXJ5IikKCmBgYAoKIyMgUmVhZCBpbiBTaGFwZWZpbGUKCmBgYHtyfQoKc2Zib3VuZGFyeSA8LSByZWFkT0dSKGRzbj0iZGF0YSIsbGF5ZXI9InNmX2JvdW5kYXJ5IikKCiMgb3IKIyBzZmJvdW5kYXJ5IDwtIHJlYWRPR1IoImRhdGEiLCJzZl9ib3VuZGFyeSIpCiMgYnV0IG5vdAojc2Zib3VuZGFyeSA8LSByZWFkT0dSKGRzbj0iZGF0YS8iLGxheWVyPSJzZl9ib3VuZGFyeSIpCgpgYGAKCgojIyBDaGVjayBvdXQgdGhlIGRhdGEgc3RydWN0dXJlCgpXaGF0IHR5cGUgb2YgYHNwYCBvYmplY3QgaXMgYHNmYm91bmRhcnlgPwpIb3cgbWFueSBgZmVhdHVyZXNgIGFyZSBpbiB0aGUgb2JqZWN0PwoKYGBge3IsIGV2YWw9Rn0KY2xhc3Moc2Zib3VuZGFyeSkKc3RyKHNmYm91bmRhcnkpIApoZWFkKHNmYm91bmRhcnlAZGF0YSkgIApgYGAKKkV4cGxvcmUgdGhlIG9iamVjdCBpbiB0aGUgRW52aSB3aW5kb3cqCgojIyBNYWtlIGEgcXVpY2sgcGxvdCBvZiBgc2Zib3VuZGFyeWAKCkhvdz8KCiMjIE1ha2UgYSBxdWljayBwbG90IG9mIGBzZmJvdW5kYXJ5YApgYGB7cn0KCnBsb3Qoc2Zib3VuZGFyeSkKCmBgYAoKCiMjIERlbW9uc3RyYXRpb24gLSBBIG1vcmUgY29tcGxleCBgU3BhdGlhbFBvbHlnb25zRGF0YUZyYW1lYAoKYGBge3IsIGV2YWw9Rn0KbGlicmFyeSh0aWdyaXMpCmNhbGNvdW50aWVzIDwtIGNvdW50aWVzKHN0YXRlPSJDYWxpZm9ybmlhIiwgY2I9VCkKY2xhc3MoY2FsY291bnRpZXMpCnNmX2NlbiA8LSBzdWJzZXQoY2FsY291bnRpZXMsIENPVU5UWUZQID09ICIwNzUiKQpwbG90KHNmX2NlbikKaGVhZChzZl9jZW5AZGF0YSkKIyBOb3cgbG9vayBpbiBFbnZpIFdpbmRvdwoKYGBgCgoKIyMgV2hhdCBpcyB0aGUgdGhlIHNmYm91bmRhcnkgQ1JTCgpJcyBpdCBhIGdlb2dyYXBoaWMgb3IgcHJvamVjdGVkIENSUz8KCmBgYHtyLCBldmFsPUZ9Cgpwcm9qNHN0cmluZyhzZmJvdW5kYXJ5KQoKYGBgCgojIyBNYXAgYm90aCBgc2Zib3VuZGFyeWAgJiBgc2Zob21lczE1X3NwYApgYGB7cn0KCnBsb3Qoc2Zib3VuZGFyeSkKcG9pbnRzKHNmaG9tZXMxNV9zcCwgY29sPSJyZWQiKQoKYGBgCgojIyBNYXAgYm90aCBgc2Zib3VuZGFyeWAgJiBgc2Zob21lczE1X3NwYAoKV2hlcmUgYXJlIHRoZSBwb2ludHM/IFdoYXQncyB3cm9uZz8KCmBgYHtyLCBldmFsPUZ9CnBsb3Qoc2Zib3VuZGFyeSkKcG9pbnRzKHNmaG9tZXMxNV9zcCwgY29sPSJyZWQiKQpgYGAKCiMjIFdoYXQncyBXcm9uZz8KCkNvbXBhcmUgdGhlIENSU3MsIGFyZSB0aGV5IHRoZSBzYW1lPwoKYGBge3IsIGV2YWw9Rn0KCnByb2o0c3RyaW5nKHNmYm91bmRhcnkpCnByb2o0c3RyaW5nKHNmaG9tZXMxNV9zcCkKcHJvajRzdHJpbmcoc2Zib3VuZGFyeSkgPT0gcHJvajRzdHJpbmcoc2Zob21lczE1X3NwKQoKYGBgCgojIyBDb21wYXJlIHRoZSBDUlNzLCBhcmUgdGhleSB0aGUgc2FtZT8KCmBgYHtyfQoKcHJvajRzdHJpbmcoc2Zib3VuZGFyeSkKcHJvajRzdHJpbmcoc2Zob21lczE1X3NwKQpwcm9qNHN0cmluZyhzZmJvdW5kYXJ5KSA9PSBwcm9qNHN0cmluZyhzZmhvbWVzMTVfc3ApCgpgYGAKCiMjIENvbXBhcmUgdGhlIGNvb3JkaW5hdGUgdmFsdWVzCgpgYGB7cn0Kc2Zib3VuZGFyeUBiYm94CnNmaG9tZXMxNV9zcEBiYm94CmBgYAoKIyMgQ1JTIFByb2JsZW1zCgpUaGUgIzEgcmVhc29uLi4uCgo8aW1nIHdpZHRoPSI2MDBweCIgc3JjPSJpbWFnZXMvbm90X3dvcmtpbmcuanBlZyI+PC9pbWc+CgojIyBDUlMgRGVmaW5pdGlvbnMKCkFsbCBgc3BgIG9iamVjdHMgc2hvdWxkIGhhdmUgYSBkZWZpbmVkIENSUwoKSWYgbm90LCBvbmUgbmVlZHMgdG8gYmUgYXNzaWduZWQgdG8gdGhlIG9iamVjdAotIFRoaXMgaXMgY2FsbGVkIGBkZWZpbmluZyBhIHByb2plY3Rpb25gLgotIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvb3JkaW5hdGVzLgoKIyMgQ1JTIFRyYW5zZm9ybWF0aW9ucwoKQWxsIGBzcGAgb2JqZWN0cyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBDUlMuCgotIFdoZW4gdGhleSBkb24ndCwgdGhleSBuZWVkIHRvIGJlIHRyYW5zZm9ybWVkIHRvIGEgY29tbW9uIENSUy4KCi0gVGhpcyBpcyBhbHNvIGNhbGxlZCBhIHByb2plY3Rpb24gdHJhbnNmb3JtYXRpb24sIAogICAgLSBvciBgcHJvamVjdGluZ2Agb3IgYHJlcHJvamVjdGlvbmAuCiAgICAKLSBQcm9qZWN0aW9uIHRyYW5zZm9ybWF0aW9uIHJldHVybnMgYSBuZXcgc3BhdGlhbCBvYmplY3Qgd2l0aCB0aGUgdHJhbnNmb3JtZWQgY29vcmRpbmF0ZXMKCgoKIyMgQ1JTIERlZmluaXRpb25zIGFuZCBUcmFuc2Zvcm1hdGlvbnMKCkdlb3NwYXRpYWwtYXdhcmUgc29mdHdhcmUgd2lsbCBoYXZlIGEgZGF0YWJhc2Ugb2YgZGVmaW5pdGlvbnMgZm9yIHRob3VzYW5kcyBvZiBFYXJ0aCByZWZlcmVuY2VkIGNvb3JkaW5hdGUgc3lzdGVtcwoKCiMjIERlZmluaW5nIGEgQ1JTCgpXZSBuZWVkIHRvIGRlZmluZSB0aGUgQ1JTIG9mIHdoYXQgYHNwYCBvYmplY3Q/Ci0gYHNmYm91bmRhcnlgIG9yIGBzZmhvbWVzMTVfc3BgPwoKV2UgbmVlZCB0byBrbm93IAotIHRoZSBhcHByb3ByaWF0ZSBDUlMgZm9yIHRoZSBkYXRhCi0gaG93IHRvIGRlZmluZSB0aGUgQ1JTCi0gaG93IHRvIGFzc2lnbiBpdCB0byB0aGUgYHNwYCBvYmplY3QKCgoKIyMgRGVmaW5lIGEgQ1JTCgpgc3BgIGluY2x1ZGVzIHRoZSBgQ1JTKClgIGZ1bmN0aW9uIHRvIGRlZmluZSBhIENSUwoKLSBUd28gd2F5cwoKYGBge3J9CgojIHVzZSBhbiBFUFNHIGNvZGUKcHJvajRzdHJpbmcoc2Zob21lczE1X3NwKSA8LSBDUlMoIitpbml0PWVwc2c6NDMyNiIpIAoKIyBvciBlbnRlciB0aGUgcHJvajQgc3RyaW5nCiMgcHJvajRzdHJpbmcoc2Zob21lczE1X3NwKSA8LSBDUlMoIitwcm9qPWxvbmdsYXQgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK2VsbHBzPVdHUzg0ICtkYXR1bT1XR1M4NCArbm9fZGVmcyIpICAKYGBgCgoKIyMgY2hlY2sgaXQKCmBgYHtyfQpwcm9qNHN0cmluZyhzZmhvbWVzMTVfc3ApCmBgYAoKIyMgTm90ZXMKCi0gYHByb2o0c3RyaW5nKClgIGNhbiBnZXQgb3Igc2V0IHRoZSBDUlMKLSBgcHJvajRgIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgbWFwIHByb2plY3Rpb25zIGFuZCBDUlNzCi0gYGVwc2dgIGNvZGVzIGFyZSB1c2VkIGFzIHNob3J0LWhhbmQgZm9yIENSU3MgZGVmaW5pdGlvbnMKCgoKIyMgQ29tcGFyZSB0aGUgQ1JTcywgQUdBSU4KCmBgYHtyfQoKcHJvajRzdHJpbmcoc2Zib3VuZGFyeSkKcHJvajRzdHJpbmcoc2Zob21lczE1X3NwKQpwcm9qNHN0cmluZyhzZmJvdW5kYXJ5KSA9PSBwcm9qNHN0cmluZyhzZmhvbWVzMTVfc3ApCgpgYGAKCgojIFRyYW5zZm9ybWluZyBhIENSUwoKIyMgVHJhbnNmb3JtIHRoZSBDUlMKClVzZSBgc3BgIGZ1bmN0aW9uIGBzcFRyYW5zZm9ybWAKClJlcXVpcmVzIGFzIGlucHV0OgoKKiBhIGBzcGAgb2JqZWN0IHRvIHRyYW5zZm9ybSB3aXRoIGEgZGVmaW5lZCBDUlMKICAgIAoqIGEgdGFyZ2V0IENSUwoKT3V0cHV0cyBhIG5ldyBzcGF0aWFsIG9iamVjdCB3aXRoIGNvb3JkaW5hdGUgZGF0YSBpbiB0aGUgdGFyZ2V0IENSUwoKLSBJdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGlucHV0IGRhdGEKCiMjIFRyYW5zZm9ybSBgc2Zib3VuZGFyeWAKCmZyb20gYFVUTTEwIENSU2AgdG8gYFdHUzg0YCAgKHdoeT8pCmBgYHtyfQoKc2Zib3VuZGFyeV9sb25sYXQgPC0gc3BUcmFuc2Zvcm0oc2Zib3VuZGFyeSwgQ1JTKCIraW5pdD1lcHNnOjQzMjYiKSkKCiMgb3IKIyBzZmJvdW5kYXJ5X2xvbmxhdCA8LSBzcFRyYW5zZm9ybShzZmJvdW5kYXJ5LCAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSUyhwcm9qNHN0cmluZyhzZmhvbWVzMTVfc3ApKSkKCmBgYAoKKkhvdyBkbyB0aGVzZSB0d28gYHNwVHJhbnNmb3JtYCBhcHByb2FjaGVzIGRpZmZlcj8qCgojIyBEaWQgaXQgd29yaz8KCkhvdyB3aWxsIHdlIGtub3c/CgojIyBEbyB0aGUgQ1JTcyBtYXRjaD8KCmBgYHtyLCBldmFsPUZ9CnByb2o0c3RyaW5nKHNmaG9tZXMxNV9zcCkgPT0gcHJvajRzdHJpbmcoc2Zib3VuZGFyeV9sb25sYXQpCgpgYGAKCiMjIE92ZXJsYXkgdGhlIGRhdGEgaW4gc3BhY2UKCmBgYHtyLCBldmFsPUZ9CnBsb3Qoc2Zib3VuZGFyeV9sb25sYXQpCnBvaW50cyhzZmhvbWVzMTVfc3AsIGNvbD0icmVkIikKcG9pbnRzKHNmaG9tZXMxNV9zcFtzZmhvbWVzMTVfc3AkdG90dmFsdWU8MTAwMDAwMCxdLCBjb2w9ImdyZWVuIikKCmBgYAoKIyMgT3ZlcmxheSB0aGUgZGF0YSBpbiBzcGFjZQoKV29vLWhvbyEKCmBgYHtyLCBlY2hvPUZ9CnBsb3Qoc2Zib3VuZGFyeV9sb25sYXQpCnBvaW50cyhzZmhvbWVzMTVfc3AsIGNvbD0icmVkIikKcG9pbnRzKHNmaG9tZXMxNV9zcFtzZmhvbWVzMTVfc3AkdG90dmFsdWU8MTAwMDAwMCxdLCBjb2w9ImdyZWVuIikKCmBgYAoKIyMgU28uLi4uCgpXZSBjYW4gdHJhbnNmb3JtIGBzcGAgb2JqZWN0cyB0byB0aGUgc2FtZSBDUlMgZm9yIG1hcHBpbmcgYW5kIHNwYXRpYWwgYW5hbHlzaXMgKHdlJ2xsIGdldCB0aGVyZSEpCgoKIyMgU2F2ZSBgc2Zib3VuZGFyeV9sb25sYXRgCgpVc2UgYHdyaXRlT0dSYCB0byBzYXZlIGBzZmJvdW5kYXJ5X2xvbmxhdGAgdG8gYSBuZXcgc2hhcGVmaWxlCgpTZWUgYD93cml0ZU9HUmAgZm9yIGhlbHAKYGBge3IsIGV2YWw9Rn0KIyB3cml0ZSB0cmFuc2Zvcm1lZCBkYXRhIHRvIGEgbmV3IHNoYXBlZmlsZSAKd3JpdGVPR1Ioc2Zib3VuZGFyeV9sb25sYXQsIAogICAgICAgICAgZHNuID0gImRhdGEiLCAKICAgICAgICAgIGxheWVyID0gInNmYm91bmFyeV9sb25sYXQiLCAKICAgICAgICAgIGRyaXZlcj0iRVNSSSBTaGFwZWZpbGUiKQoKIyBpcyBpdCB0aGVyZT8KZGlyKCJkYXRhIikKYGBgCgoKCiMjIFByb2plY3Rpb25zLCBDUlMsIG9oIG15IQoKV2Ugd2FudCBhbGwgZGF0YSBpbiB0aGUgc2FtZSBDUlMKCldoaWNoIG9uZSBpcyBiZXN0PwoKPGltZyBoZWlnaHQgPSI1MDBweCIgc3JjPSJodHRwczovL2QzZW5uaXoyNDd5MGE5LmNsb3VkZnJvbnQubmV0L3dlYnNpdGUvdmFyL3RtcC9pbWFnZS10aHVtYm5haWxzLzMwMDAwLzM0NTQ2L3RodW1iX19hcnRpY2xlLWhlYWRlci1zcXVhcmUvaGVyby1zcXVhcmUtZ2V0dHlpbWFnZXMtNTYzOTM2MjE3LmpwZWciPjwvaW1nPgoKCiMjIENvbW1vbiBDUlMgQ29kZXMKCioqR2VvZ3JhcGhpYyBDUlNzKioKCiogYDQzMjZgIEdlb2dyYXBoaWMsIFdHUzg0IChkZWZhdWx0IGZvciBsb24vbGF0KQoKKiBgNDI2OWAgR2VvZ3JhcGhpYywgTkFEODMgKFVTQSBGZWQgYWdlbmNpZXMgbGlrZSBDZW5zdXMpCgoqKlByb2plY3RlZCBDUlNzKioKCiogYDUwNzBgIFVTQSBDb250aWd1b3VzIEFsYmVycyBFcXVhbCBBcmVhIENvbmljCgoqIGAzMzEwYCBDQSBBTGJlcnMgRXF1YWwgQXJlYQoKKiBgMjY5MTBgIFVUTSBab25lIDEwLCBOQUQ4MyAoTm9ydGhlcm4gQ2FsKQoKKiBgMzg1N2AgV2ViIE1lcmNhdG9yICh3ZWIgbWFwcykKCiMjIEZpbmRpbmcgQ1JTIENvZGVzCgpTZWUgW2h0dHA6Ly9zcGF0aWFscmVmZXJlbmNlLm9yZy9dKGh0dHA6Ly9zcGF0aWFscmVmZXJlbmNlLm9yZy8pCgpVc2UgdGhpcyBzaXRlIHRvIGZpbmQgRVBTRyBjb2RlcyBhbmQgcHJvajQgQ1JTIHN0cmluZ3MKCiMgUVVFU1RJT05TPwoKIyBCcmVhay4uLi4uCgoKIyBNYXBwaW5nIFNwYXRpYWwgT2JqZWN0cwoKIyMgU28gZmFyIHdlIGhhdmUgY3JlYXRlZCBtYXBzIHdpdGgKCmBiYXNlOjpwbG90YCwgYGdncGxvdGAsIGBnZ21hcGAgZm9yIGdlb3NwYXRpYWwgZGF0YSBpbiBkYXRhIGZyYW1lcwoKLSBncmVhdCBmb3IgY3JlYXRpbmcgbWFwcyBnaXZlbiB0aGVzZSB0eXBlcyBvZiBkYXRhCgoKYHNwOjpwbG90YCBmb3IgYHNwYCBvYmplY3RzCgotIG1laCwgYnV0IGdyZWF0IGZvciBhIHF1aWNrIGxvb2sgYXQgc3BhdGlhbCBkYXRhCgojIyBUaGVyZSBpcyBhbHNvIHNwOjpzcHBsb3QKClVzZSBpdCB0byBjcmVhdGUgcXVpY2sgbWFwcwoKQ2FuIGJlIHVzZWQgdG8gY3JlYXRlIGdyZWF0IG1hcHMgCgotIEJVVCBjb21wbGV4LCBub24taW50dWl0aXZlIHN5bnRheCA9IGxvbmcgdWdseSBjb2RlCgpTZWUgZXhhbXBsZXMgaW4gW3NwIEdhbGxlcnk6IFBsb3R0aW5nIG1hcHMgd2l0aCBzcF0oaHR0cHM6Ly9lZHplci5naXRodWIuaW8vc3ApCgojIyBzcHBsb3QKCmBgYHtyfQojIG1hcCBvZiB0aGUgc2Zob21lcyBkYXRhIGJ5IHRvdGFsdmF1ZQpzcHBsb3Qoc2Zob21lczE1X3NwLCJ0b3R2YWx1ZSIpCmBgYAoKIyB0bWFwCgojIyB0bWFwCgpgdG1hcGAgc3RhbmRzIGZvciB0aGVtYXRpYyBtYXAKCkdyZWF0IG1hcHMgd2l0aCBsZXNzIGNvZGUgdGhhbiB0aGUgYWx0ZXJuYXRpdmVzCgpTeW50YXggc2hvdWxkIGJlIGZhbWlsYXIgdG8gZ2dwbG90MiB1c2VycywgYnV0IHNpbXBsZXIKClJlbGF0aXZlbHkgZWFzeSB0byBjcmVhdGUgaW50ZXJhY3RpdmUgbWFwcwoKIyMgdG1hcCBzdGFydGluZyBwb2ludHMKCi0gP3RtYXAKLSB2aWduZXR0ZSgidG1hcC1udXRzaGVsbCIpCi0gdmlnbmV0dGUoInRtYXAtbW9kZXMiKQotIFt0bWFwIGluIGEgTnV0c2hlbGxdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy90bWFwL3ZpZ25ldHRlcy90bWFwLW51dHNoZWxsLmh0bWwpIAoKCiMjIHRtYXAKCkxvYWQgdGhlIGxpYnJhcnkKCmBgYHtyfQpsaWJyYXJ5KHRtYXApCgpgYGAKCiMjIFF1aWNrIHRtYXAgKHF0bSkKCmBgYHtyfQpxdG0oc2Zob21lczE1X3NwKQpgYGAKCiMjIFF1aWNrIEludGVyYWN0aXZlIHRtYXAKCmBgYHtyfQp0bWFwX21vZGUoInZpZXciKQpxdG0oc2Zob21lczE1X3NwKQpgYGAKCiMjIFJlc2V0IHRoZSBtb2RlIHRvIHN0YXRpYyBwbG90CgpgYGB7cn0KdG1hcF9tb2RlKCJwbG90IikKYGBgCgoKIyMgQ2hhbGxlbmdlCgpDcmVhdGUgYSBzdGF0aWMgYHF0bWAgb2YgYHNmYm91bmRhcnlfbG9ubGF0YAoKLSBib251cywgc2V0IHRoZSBib3JkZXIgY29sb3IgdG8gYmxhY2sgYW5kIHRoZSBmaWxsIHRvIGJlaWdlCgpTZWUgYD9xdG1gIGZvciBkZXNjcmlwdGlvbiBvZiBhbGwgb3B0aW9ucwoKCiMjIHNmYm91bmRhcnlfbG9ubGF0IHF1aWNrbWFwCgpgYGB7cn0KcXRtKHNmYm91bmRhcnlfbG9ubGF0LCBib3JkZXJzPSJibGFjayIsIGZpbGw9ImJlaWdlIikKYGBgCgojIENyYWZ0aW5nIGNvbXBsZXggdG1hcHMKCiMjIGB0bWFwYCBTaGFwZXMgYW5kIEdyYXBoaWMgRWxlbWVudHMKCnRtYXAncyBmbGV4aWJpbGl0eSBjb21lcyBpbiBob3cgaXQgaW50aXRpdmVseSBhbGxvd3MgeW91IHRvIGxheWVyIHNwYXRpYWwgZGF0YSBhbmQgc3R5bGUgdGhlIGxheWVycyBieSBkYXRhIGF0dHJpYnV0ZXMKClVzZSBgdG1fc2hhcGUoPHNwX29iamVjdD4pYCAgdG8gc3BlY2lmaXkgYSBnZW9zcGF0aWFsIGRhdGEgbGF5ZXIKCkFkZCBgKyB0bV88ZWxlbWVudD4oLi4uKWAgdG8gc3R5bGUgdGhlIGxheWVyIGJ5IGRhdGEgdmFsdWVzCgouLi5hbmQgb3RoZXIgb3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBwdWJsaWNhdGlvbiByZWFkeSBtYXAKCiMjIEV4cGxvcmluZyBgdG1hcGAgZnVuY3Rpb25hbGl0eQoKP3RtYXBfc2hhcGUKCj90bWFwX2VsZW1lbnQKCi0gP3RtX3BvbHlnb25zICh0bV9maWxsLCB0bV9ib3JkZXJzKQotID90bV9zeW1ib2xzICh0bV9kb3RzLCBldGMuLi4pCgotIFt0bWFwIGluIGEgTnV0c2hlbGxdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy90bWFwL3ZpZ25ldHRlcy90bWFwLW51dHNoZWxsLmh0bWwpIAoKIyMgIlNsb3ciIHRtYXBzCmBgYHtyfQp0bV9zaGFwZShzZmJvdW5kYXJ5X2xvbmxhdCkgKyB0bV9wb2x5Z29ucyhjb2w9ImJlaWdlIiwgYm9yZGVyLmNvbD0iYmxhY2siKQpgYGAKCiMjIGB0bWFwYCBvZiB0b3R2YWx1ZQoKYGBge3J9CnRtX3NoYXBlKHNmaG9tZXMxNV9zcCkgKyB0bV9kb3RzKGNvbD0idG90dmFsdWUiLCBzaXplPS41KQpgYGAKCiMjIENoYWxsZW5nZQoKTWFrZSB0aGUgcHJldmlvdXMgbWFwIGludGVyYWN0aXZlCi0gKipOT1RFKio6IGNvbHVtbm4gbmFtZXMgbXVzdCBiZSBxdW90ZWQhCgpab29tIGluIG9uIGxpZ2h0ICYgZGFyayBjb2xvcmVkIHBvaW50cyB0byBzZWUgaWYgdGhlIGNvcnJlc3Nwb25kaW5nIGB0b3R2YWx1ZWAgbWFrZXMgc2Vuc2UuCgojIyBSZXNldCB0aGUgbW9kZSB0byBzdGF0aWMKCmBgYHtyfQp0bWFwX21vZGUoInBsb3QiKQpgYGAKCiMjIE92ZXJsYXlpbmcgbGF5ZXJzCgpgYGB7cn0KCnRtX3NoYXBlKHNmYm91bmRhcnlfbG9ubGF0KSArIHRtX3BvbHlnb25zKGNvbD0iYmxhY2siLCBib3JkZXIuY29sPSJncmV5IikgKyAKICAgdG1fc2hhcGUoc2Zob21lczE1X3NwKSArIHRtX2RvdHMoY29sPSJ0b3R2YWx1ZSIsIHNpemU9LjUpCmBgYAoKIyMgQ2hhbGxlbmdlCgpSZWRvIHRoZSBsYXN0IG1hcCBidXQKCmNoYW5nZSB0aGUgbGVnZW5kIHRpdGxlIHRvICJTYW4gRnJhbmNpc2NvIEhvbWUgU2FsZXMsIDIwMTUiCgotIGhpbnQ6IGB0aXRsZT1gCgojIHRtYXAgYW5kIENSU3MKCiMjIHRtYXAgYW5kIENSU3MKCldlIGhhdmUgYmVlbiBtYXBwaW5nIGRhdGEgaW4gV0dTODQgKGxvbi9sYXQpIENSUy4KCk5vdCBhIGdyZWF0IGlkZWEgZm9yIHN0YXRpYyBtYXBzIG9mIGxhcmdlciBhcmVhcyBhcyBkaXN0b3J0aW9uIGJlY29tZXMgZXZpZGVudC4KCkxldCdzIGV4cGxvcmUgdGhhdCBkaXN0b3J0aW9uIGFuZCBob3cgdG8gYWRkcmVzcyB3aXRoIGB0bWFwYAoKIyMgVVMgU3RhdGVzCgpMZXQncyBsb2FkIGFuZCBtYXAgZGF0YSBmb3IgVVMgc3RhdGVzLgoKRGF0YSBhcmUgaW4gdGhlIGZpbGUgYGRhdGEvdXNfc3RhdGVzX3BvcC5zaHBgCgoKIyMgQ2hhbGxlbmdlCgpVc2UgYHJlYWRPR1JgIHRvIGxvYWQgYGRhdGEvdXNfc3RhdGVzX3BvcC5zaHBgIGludG8gYW4gYHNwYCBvYmplY3QgbmFtZWQgYHVzX3N0YXRlc2AKCiMjIFJlYWQgaW4gJiBwbG90IHRoZSBEYXRhCmBgYHtyfQp1c19zdGF0ZXMgPC0gcmVhZE9HUigiLi9kYXRhIiwgInVzX3N0YXRlc19wb3AiKQpgYGAKCiMjIFRha2UgYSBxdWljayBsb29rCgpgYGB7cn0KcXRtKHVzX3N0YXRlcykKYGBgCgojIyBRdWVzdGlvbnMKClJldmlldyBgdXNfc3RhdGVzYCB3aXRoIHRoZSBgc3BgIGNvbW1hbmRzIHdlIHVzZWQgZWFybGllciBhbmQgLyBvciBleHBsb3JlIGluIHRoZSBFbnZpcm9ubWVudCB3aW5kb3cuCgotIFdoYXQgdHlwZSBvZiBgc3BgIG9iamVjdCBpcyBgdXNfc3RhdGVzYAoKLSBIb3cgbWFueSBmZWF0dXJlcyBkb2VzIGl0IGNvbnRhaW4/CgotIEhvdyBtYW55IGF0dHJpYnV0ZXMgZGVzY3JpYmUgdGhvc2UgZmVhdHVyZXM/CgotIFdoYXQgaXMgdGhlIENSUz8KCgojIyBDdXN0b21pemluZyB0aGUgZGlzcGxheQoKYGBge3J9CnRtX3NoYXBlKHVzX3N0YXRlcykgKyB0bV9wb2x5Z29ucyhjb2w9ImdyZXkiLCBib3JkZXIuY29sID0gIndoaXRlIikKYGBgCgojIyBDUlMgYW5kIFNoYXBlCgpOb3RpY2UgYW55dGhpbmcgb2RkIGFib3V0IHNoYXBlIG9mIFVTQT8KYGBge3IsIGVjaG89Rn0KdG1fc2hhcGUodXNfc3RhdGVzKSArIHRtX3BvbHlnb25zKGNvbD0iZ3JleSIsIGJvcmRlci5jb2wgPSAid2hpdGUiKQpgYGAKCiMjIER5bmFtaWNhbGx5IFRyYW5zZm9ybWluZyB0aGUgQ1JTCgpgYGB7cn0KdG1fc2hhcGUodXNfc3RhdGVzLCBwcm9qZWN0aW9uPSIraW5pdD1lcHNnOjUwNzAiKSArIHRtX3BvbHlnb25zKGNvbD0iZ3JleSIsIGJvcmRlci5jb2wgPSAid2hpdGUiKQpgYGAKCgojIyBXaGF0J3MgaGFwcGVuaW5nIGhlcmU/CgpgYGB7cn0KdG1fc2hhcGUodXNfc3RhdGVzLCBwcm9qZWN0aW9uPSIraW5pdD1lcHNnOjUwNzAiKSArIHRtX3BvbHlnb25zKGNvbD0iZ3JleSIsIGJvcmRlci5jb2wgPSAid2hpdGUiKSArCnRtX3NoYXBlKHVzX3N0YXRlcykgKyB0bV9ib3JkZXJzKGNvbD0icHVycGxlIikgCmBgYAoKCiMjIER5bmFtaWMgQ1JTIFRyYW5zZm9ybWF0aW9ucwoKQWxzbyBjYWxsZWQgYE9uLXRoZS1mbHkgcmVwcm9qZWN0aW9uYCBpbiBBcmNHSVMgJiBRR0lTCgpWZXJ5IGNvb2whCgpCVVQsIGlmIHlvdSB3YW50IHRvIHVzZSBkYXRhIGluIGEgZGlmZmVyZW50IENSUyBpdCBpcyBiZXN0IHRvIHRyYW5zZm9ybSBpdC4KCiMjIENoYWxsZW5nZQoKKiBUcmFuc2Zvcm0gdGhlIGB1c19zdGF0ZXNgIGRhdGEgdG8gdGhlIFVTQSBDb250aWd1b3VzIEFsYmVycyBDUlMgKDUwNzApLAoKKiBTYXZlIG91dHB1dCBhcyBhIG5ldyBgU3BhdGlhbFBvbHlnb25zRGF0YUZyYW1lYCBjYWxsZWQgYHVzX3N0YXRlc181MDcwYAoKIyMgdXNfc3RhdGVzXzUwNzAKYGBge3J9CnVzX3N0YXRlc181MDcwIDwtIHNwVHJhbnNmb3JtKHVzX3N0YXRlcywgQ1JTKCIraW5pdD1lcHNnOjUwNzAiKSkKCmBgYAoKIyMgUGxvdHRpbmcgdGhlIFRyYW5zZm9ybWVkIERhdGEKCmBgYHtyfQp0bV9zaGFwZSh1c19zdGF0ZXNfNTA3MCkgKyB0bV9wb2x5Z29ucyhjb2w9ImJlaWdlIikgKwogIHRtX3NoYXBlKHVzX3N0YXRlcykgKyB0bV9ib3JkZXJzKGNvbD0icHVycGxlIikKYGBgCgojIFF1ZXN0aW9ucz8KCiMjIFJlY2FwCgotIEdlb3NwYXRpYWwgRGF0YSBpbiBSCi0gQ1NWID4gRGF0YSBGcmFtZSA+IGdncGxvdC9nZ21hcAotIEdEQUwsIHJlYWRPR1IsIHdyaXRlT0dSCi0gRGF0YSBGcmFtZSB0byBTRFBGCi0gQ1JTIGRlZmluaXRpb25zIGFuZCB0cmFuc2Zvcm1hdGlvbnMKLSBPdmVybGF5cwotIHRtYXAKCiMgRW5kIG9mIFBhcnQgSQoKIyBJTVBPUlRBTlQgQU5OT1VOQ0VNRU5UCgojIyBgc2ZgIHBhY2thZ2UKClRoZSBgc2ZgLCBvciBgc2ltcGxlIGZlYXR1cmVzYCBwYWNrYWdlIGluIFIgaGFzIG1hbnkgaW1wcm92ZW1lbnRzCgpCYXNlZCBvbiBvcGVuIHN0YW5kYXJkcyBmb3Igc3BlY2lmeWluZyBzcGF0aWFsIGRhdGEKCmBnZ3Bsb3RgIGFuZCBgZ2dtYXBgIGNhbiBtYXAgYHNmYCBzcGF0aWFsIG9iamVjdHMKCkJ1dCBtb3N0IHNwYXRpYWwgcGFja2FnZXMgc3RpbGwgZGVwZW5kIG9uIGBzcGAKClNvLCBsaXZlIG9uIHRoZSBibGVlZGluZyBlZGdlIG9yIGNoZWNrIGJhY2sgaW4gYSB5ZWFyIG9yIHNvLgoKCiMjIE91dHB1dCBjb2RlIHRvIHNjcmlwdAoKYGBge3IsIGV2YWw9Rn0KbGlicmFyeShrbml0cikKcHVybCgici1nZW9zcGF0aWFsLXdvcmtzaG9wLXNwMjAxOC1wdDEuUm1kIiwgb3V0cHV0ID0gInNjcmlwdHMvci1nZW9zcGF0aWFsLXdvcmtzaG9wLXNwMjAxOC1wdDEuciIsIGRvY3VtZW50YXRpb24gPSAxKQpgYGAK